diff --git a/opensfm/context.py b/opensfm/context.py index 891825435..169bb83df 100644 --- a/opensfm/context.py +++ b/opensfm/context.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import logging import os -import resource +# import resource import sys import cv2 @@ -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 diff --git a/opensfm/src/CMakeLists.txt b/opensfm/src/CMakeLists.txt index b8e4753e5..fc0ba7eb6 100644 --- a/opensfm/src/CMakeLists.txt +++ b/opensfm/src/CMakeLists.txt @@ -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) @@ -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 diff --git a/opensfm/src/bundle/CMakeLists.txt b/opensfm/src/bundle/CMakeLists.txt index a78718cb8..0cfa59adc 100644 --- a/opensfm/src/bundle/CMakeLists.txt +++ b/opensfm/src/bundle/CMakeLists.txt @@ -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 #) @@ -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 diff --git a/opensfm/src/dense/CMakeLists.txt b/opensfm/src/dense/CMakeLists.txt index 50bb1c9d9..ae109fa8f 100644 --- a/opensfm/src/dense/CMakeLists.txt +++ b/opensfm/src/dense/CMakeLists.txt @@ -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}/.." diff --git a/opensfm/src/dense/src/depthmap.cc b/opensfm/src/dense/src/depthmap.cc index ed1d6907c..55401f38e 100644 --- a/opensfm/src/dense/src/depthmap.cc +++ b/opensfm/src/dense/src/depthmap.cc @@ -263,7 +263,7 @@ 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) { @@ -271,7 +271,10 @@ float DepthmapEstimator::PatchVariance(int i, int j) { patch[counter++] = images_[0].at(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, diff --git a/opensfm/src/features/CMakeLists.txt b/opensfm/src/features/CMakeLists.txt index ed36adba6..2fbc1984f 100644 --- a/opensfm/src/features/CMakeLists.txt +++ b/opensfm/src/features/CMakeLists.txt @@ -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 diff --git a/opensfm/src/features/src/hahog.cc b/opensfm/src/features/src/hahog.cc index a90efe194..63213020a 100644 --- a/opensfm/src/features/src/hahog.cc +++ b/opensfm/src/features/src/hahog.cc @@ -4,6 +4,12 @@ #include #include +#if _MSC_VER > 1700 +#define _USE_MATH_DEFINES +#include +#endif + + extern "C" { #include #include diff --git a/opensfm/src/geometry/CMakeLists.txt b/opensfm/src/geometry/CMakeLists.txt index e691bf880..101e1b09c 100644 --- a/opensfm/src/geometry/CMakeLists.txt +++ b/opensfm/src/geometry/CMakeLists.txt @@ -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 @@ -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 diff --git a/opensfm/src/geometry/camera_functions.h b/opensfm/src/geometry/camera_functions.h index 160a35e40..5839a8f19 100644 --- a/opensfm/src/geometry/camera_functions.h +++ b/opensfm/src/geometry/camera_functions.h @@ -8,6 +8,12 @@ #include +#if _MSC_VER > 1700 +#define _USE_MATH_DEFINES +#include +#endif + + enum class ProjectionType { PERSPECTIVE, BROWN, FISHEYE, SPHERICAL, DUAL }; enum class Disto { K1 = 0, K2 = 1, K3 = 2, P1 = 3, P2 = 4, COUNT = 5 }; diff --git a/opensfm/src/robust/CMakeLists.txt b/opensfm/src/robust/CMakeLists.txt index d758be3a7..2de1b29ad 100644 --- a/opensfm/src/robust/CMakeLists.txt +++ b/opensfm/src/robust/CMakeLists.txt @@ -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 diff --git a/opensfm/src/sfm/CMakeLists.txt b/opensfm/src/sfm/CMakeLists.txt index 26ae71050..f748d6c92 100644 --- a/opensfm/src/sfm/CMakeLists.txt +++ b/opensfm/src/sfm/CMakeLists.txt @@ -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 diff --git a/opensfm/src/third_party/vlfeat/vl/host.h b/opensfm/src/third_party/vlfeat/vl/host.h index 293fe1f55..b552a2698 100644 --- a/opensfm/src/third_party/vlfeat/vl/host.h +++ b/opensfm/src/third_party/vlfeat/vl/host.h @@ -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) diff --git a/requirements.txt b/requirements.txt index 39e447f92..1c71a2df9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -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