Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows integration #1

Open
wants to merge 1 commit into
base: opensfm_integration
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions opensfm/context.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import logging
import os
import resource
# import resource
import sys

import cv2
Expand Down Expand Up @@ -78,4 +78,5 @@ def processes_that_fit_in_memory(desired, per_process):


def current_memory_usage():
return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss * rusage_unit
# return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss * rusage_unit
return 1
66 changes: 57 additions & 9 deletions opensfm/src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
#cmake_minimum_required(VERSION 3.0)
if (WIN32)
cmake_minimum_required(VERSION 3.0)
endif()

LINK_DIRECTORIES(/usr/local/Cellar)

project(opensfm C CXX)
Expand Down Expand Up @@ -28,26 +31,71 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
# For compiling VLFeat
add_definitions(-DVL_DISABLE_AVX)

#include_directories(/usr/local/Cellar/gflags/2.2.2/include)
#include_directories(/usr/local/Cellar/glog/0.4.0/include)
include_directories(/usr/local/include)
if (UNIX)
#include_directories(/usr/local/Cellar/gflags/2.2.2/include)
#include_directories(/usr/local/Cellar/glog/0.4.0/include)
include_directories(/usr/local/include)
else()
set(EIGEN_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/packages/eigen3_x64-windows/include")

set(AMD_LIBRARY "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/libamd.lib")
set(CAMD_LIBRARY "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/libcamd.lib")
set(COLAMD_LIBRARY "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/libcolamd.lib")
set(CCOLAMD_LIBRARY "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/libccolamd.lib")
set(CHOLMOD_LIBRARY "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/libcholmod.lib")
set(CXSPARSE_LIBRARY "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/libcxsparse.lib")
set(SUITESPARSEQR_LIBRARY "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/libspqr.lib")

set(AMD_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/installed/x64-windows/include")
set(CAMD_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/installed/x64-windows/include")
set(COLAMD_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/installed/x64-windows/include")
set(CCOLAMD_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/installed/x64-windows/include")
set(CHOLMOD_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/installed/x64-windows/include")
set(CXSPARSE_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/installed/x64-windows/include")
set(SUITESPARSEQR_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/installed/x64-windows/include")


set(CERES_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/packages/ceres_x64-windows/include")
set(CERES_LIBRARY "C:/Users/digitalist/digitalist/projects/vcpkg/packages/ceres_x64-windows/lib/ceres.lib")

set(GFLAGS_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/packages/gflags_x64-windows/include")
set(GFLAGS_LIBRARY "C:/Users/digitalist/digitalist/projects/vcpkg/packages/gflags_x64-windows/lib/gflags.lib")

set(GLOG_INCLUDE_DIR "C:/Users/digitalist/digitalist/projects/vcpkg/packages/glog_x64-windows/include")
set(GLOG_LIBRARY "C:/Users/digitalist/digitalist/projects/vcpkg/packages/glog_x64-windows/lib/glog.lib")

set(OpenCV_DIR "C:/opencv/build")
endif()


####### Find Dependencies #######
#find_package(OpenMP)

if (WIN32)
find_package(OpenMP)
endif()

if (OPENMP_FOUND)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()

find_package(LAPACK)
find_package(SuiteSparse)
find_package(lapack CONFIG REQUIRED)
set(BLAS_LIBRARIES "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/libblas.lib")
set(LAPACK_LIBRARIES "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/liblapack.lib")
find_package(suitesparse CONFIG REQUIRED)
set(BLAS_LIBRARIES "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/libblas.lib")
set(LAPACK_LIBRARIES "C:/Users/digitalist/digitalist/projects/vcpkg/packages/suitesparse_x64-windows/lib/liblapack.lib")

find_package(Eigen REQUIRED)
find_package(Ceres REQUIRED)
find_package(Gflags REQUIRED)
find_package(Glog REQUIRED)
find_package(gtest REQUIRED)
include_directories(${GLOG_INCLUDE_DIRS} ${GFLAGS_INCLUDE_DIRS})

if (UNIX)
find_package(gtest REQUIRED)
include_directories(${GLOG_INCLUDE_DIRS} ${GFLAGS_INCLUDE_DIRS})
endif()

find_package(OpenCV)
# OpenCV's OpenCVConfig will enforce imgcodecs for < 3.0
# (even if OPTIONAL_COMPONENTS) so we remove it as we don't need it
Expand Down
9 changes: 9 additions & 0 deletions opensfm/src/bundle/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ if (SUITESPARSE_FOUND)
endif()
target_include_directories(bundle PRIVATE ${CMAKE_SOURCE_DIR})

if (WIN32)
target_include_directories(bundle PRIVATE ${CERES_INCLUDE_DIR} ${GFLAGS_INCLUDE_DIR} ${GLOG_INCLUDE_DIR})
endif()

#set(BUNDLE_TEST_FILES
# test/reprojection_errors_test.cc
#)
Expand All @@ -35,6 +39,11 @@ target_include_directories(bundle PRIVATE ${CMAKE_SOURCE_DIR})
#add_test(bundle_test bundle_test)

pybind11_add_module(pybundle python/pybind.cc)

if (WIN32)
target_include_directories(pybundle PRIVATE ${GFLAGS_INCLUDE_DIR} ${GLOG_INCLUDE_DIR})
endif()

target_link_libraries(pybundle PRIVATE
bundle
geometry
Expand Down
2 changes: 2 additions & 0 deletions opensfm/src/dense/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ target_include_directories(dense PRIVATE ${CMAKE_SOURCE_DIR})
#add_test(dense_test dense_test)

pybind11_add_module(pydense python/pybind.cc)
target_include_directories(pydense PRIVATE ${GLOG_INCLUDE_DIR} ${GFLAGS_INCLUDE_DIR})

target_link_libraries(pydense PRIVATE dense foundation pybind11)
set_target_properties(pydense PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${opensfm_SOURCE_DIR}/.."
Expand Down
7 changes: 5 additions & 2 deletions opensfm/src/dense/src/depthmap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -263,15 +263,18 @@ void DepthmapEstimator::ComputeIgnoreMask(DepthmapEstimatorResult *result) {
}

float DepthmapEstimator::PatchVariance(int i, int j) {
float patch[patch_size_ * patch_size_];
float* patch = new float[patch_size_ * patch_size_];
int hpz = (patch_size_ - 1) / 2;
int counter = 0;
for (int u = -hpz; u <= hpz; ++u) {
for (int v = -hpz; v <= hpz; ++v) {
patch[counter++] = images_[0].at<unsigned char>(i + u, j + v);
}
}
return Variance(patch, patch_size_ * patch_size_);

float variance = Variance(patch, patch_size_ * patch_size_);

return variance;
}

void DepthmapEstimator::PatchMatchForwardPass(DepthmapEstimatorResult *result,
Expand Down
1 change: 1 addition & 0 deletions opensfm/src/features/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ target_link_libraries(features
target_include_directories(features PRIVATE ${CMAKE_SOURCE_DIR})

pybind11_add_module(pyfeatures python/pybind.cc)
target_include_directories(pyfeatures PRIVATE ${GLOG_INCLUDE_DIR} ${GFLAGS_INCLUDE_DIR})
target_link_libraries(pyfeatures
PRIVATE
features
Expand Down
6 changes: 6 additions & 0 deletions opensfm/src/features/src/hahog.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
#include <vector>
#include <iostream>

#if _MSC_VER > 1700
#define _USE_MATH_DEFINES
#include <math.h>
#endif


extern "C" {
#include <third_party/vlfeat/vl/covdet.h>
#include <third_party/vlfeat/vl/sift.h>
Expand Down
4 changes: 3 additions & 1 deletion opensfm/src/geometry/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ target_link_libraries(geometry
PRIVATE
foundation
)
target_include_directories(geometry PUBLIC ${CMAKE_SOURCE_DIR})
target_include_directories(geometry PUBLIC ${CMAKE_SOURCE_DIR} ${CERES_INCLUDE_DIR})
target_include_directories(geometry PRIVATE ${GFLAGS_INCLUDE_DIR} ${GLOG_INCLUDE_DIR})

#set(GEOMETRY_TEST_FILES
# test/camera_test.cc
Expand All @@ -31,6 +32,7 @@ target_include_directories(geometry PUBLIC ${CMAKE_SOURCE_DIR})
#add_test(geometry_test geometry_test)

pybind11_add_module(pygeometry python/pybind.cc)
target_include_directories(pygeometry PRIVATE ${GFLAGS_INCLUDE_DIR} ${GLOG_INCLUDE_DIR})
target_link_libraries(pygeometry
PRIVATE
geometry
Expand Down
6 changes: 6 additions & 0 deletions opensfm/src/geometry/camera_functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@

#include <iostream>

#if _MSC_VER > 1700
#define _USE_MATH_DEFINES
#include <math.h>
#endif


enum class ProjectionType { PERSPECTIVE, BROWN, FISHEYE, SPHERICAL, DUAL };
enum class Disto { K1 = 0, K2 = 1, K3 = 2, P1 = 3, P2 = 4, COUNT = 5 };

Expand Down
3 changes: 3 additions & 0 deletions opensfm/src/robust/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@ target_link_libraries(robust
geometry
)
target_include_directories(robust PUBLIC ${CMAKE_SOURCE_DIR})
target_include_directories(robust PRIVATE ${GFLAGS_INCLUDE_DIR} ${GLOG_INCLUDE_DIR} ${CERES_INCLUDE_DIR})

pybind11_add_module(pyrobust python/pybind.cc)
target_include_directories(pyrobust PRIVATE ${CERES_INCLUDE_DIR} ${GFLAGS_INCLUDE_DIR})

target_link_libraries(pyrobust
PRIVATE
robust
Expand Down
1 change: 1 addition & 0 deletions opensfm/src/sfm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ target_include_directories(sfm PUBLIC ${EIGEN_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR})
#add_test(sfm_test sfm_test)

pybind11_add_module(pysfm python/pybind.cc)
target_include_directories(pysfm PRIVATE ${GLOG_INCLUDE_DIR} ${GFLAGS_INCLUDE_DIR})
target_link_libraries(pysfm
PRIVATE
foundation
Expand Down
6 changes: 4 additions & 2 deletions opensfm/src/third_party/vlfeat/vl/host.h
Original file line number Diff line number Diff line change
Expand Up @@ -312,8 +312,10 @@ defined(__DOXYGEN__)
#if defined(VL_COMPILER_MSC) & ! defined(__DOXYGEN__)
# define VL_UNUSED
# define VL_INLINE static __inline
# define snprintf _snprintf
# define isnan _isnan
#if _MSC_VER < 1700
# define snprintf _snprintf
# define isnan _isnan
#endif
# ifdef VL_BUILD_DLL
# ifdef __cplusplus
# define VL_EXPORT extern "C" __declspec(dllexport)
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ joblib==0.14.1
loky==1.2.1
networkx==1.11
numpy
opencv-contrib-python-headless==4.3.0.36
#opencv-contrib-python-headless==4.3.0.36
Pillow==6.2.2
pyproj>=1.9.5.1
pytest==3.0.7
Expand Down