diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index 27990911fe..955dcc4afd 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -24,22 +24,6 @@ # OPENCV_MODULE_${the_module}_WRAPPERS - list of wrappers supporting this module # HAVE_${the_module} - for fast check of module availability -# Module layout: -# -# ├── doc - docs -# ├── include -# │   └── opencv2 -# │   └── - sub headers -# ├── misc -# │   ├── java - additional files for java wrapper -# │   └── python - additional files for python wrapper -# ├── perf - perfomance tests -# ├── samples - sample code -# ├── src - sources -# ├── test - accuracy tests -# └── tutorials - tutorials - - # To control the setup of the module you could also set: # the_description - text to be used as current module description # OPENCV_MODULE_TYPE - STATIC|SHARED - set to force override global settings for current module @@ -77,6 +61,7 @@ foreach(mod ${OPENCV_MODULES_BUILD} ${OPENCV_MODULES_DISABLED_USER} ${OPENCV_MOD unset(OPENCV_MODULE_${mod}_PRIVATE_REQ_DEPS CACHE) unset(OPENCV_MODULE_${mod}_PRIVATE_OPT_DEPS CACHE) unset(OPENCV_MODULE_${mod}_LINK_DEPS CACHE) + unset(OPENCV_MODULE_${mod}_WRAPPERS CACHE) endforeach() # clean modules info which needs to be recalculated @@ -112,6 +97,15 @@ macro(ocv_add_dependencies full_modname) endforeach() unset(__depsvar) + # hack for python + set(__python_idx) + list(FIND OPENCV_MODULE_${full_modname}_WRAPPERS "python" __python_idx) + if (NOT __python_idx EQUAL -1) + list(REMOVE_ITEM OPENCV_MODULE_${full_modname}_WRAPPERS "python") + list(APPEND OPENCV_MODULE_${full_modname}_WRAPPERS "python2" "python3") + endif() + unset(__python_idx) + ocv_list_unique(OPENCV_MODULE_${full_modname}_REQ_DEPS) ocv_list_unique(OPENCV_MODULE_${full_modname}_OPT_DEPS) ocv_list_unique(OPENCV_MODULE_${full_modname}_PRIVATE_REQ_DEPS) diff --git a/modules/calib3d/CMakeLists.txt b/modules/calib3d/CMakeLists.txt index 844365f71e..b79944da59 100644 --- a/modules/calib3d/CMakeLists.txt +++ b/modules/calib3d/CMakeLists.txt @@ -1,2 +1,2 @@ set(the_description "Camera Calibration and 3D Reconstruction") -ocv_define_module(calib3d opencv_imgproc opencv_features2d WRAP java) +ocv_define_module(calib3d opencv_imgproc opencv_features2d WRAP java python) diff --git a/modules/core/CMakeLists.txt b/modules/core/CMakeLists.txt index 22668f4892..7052ce615a 100644 --- a/modules/core/CMakeLists.txt +++ b/modules/core/CMakeLists.txt @@ -1,7 +1,7 @@ set(the_description "The Core Functionality") ocv_add_module(core PRIVATE_REQUIRED ${ZLIB_LIBRARIES} "${OPENCL_LIBRARIES}" OPTIONAL opencv_cudev - WRAP java) + WRAP java python) if(HAVE_WINRT_CX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW") diff --git a/modules/features2d/CMakeLists.txt b/modules/features2d/CMakeLists.txt index 3395b99161..bf7d66e433 100644 --- a/modules/features2d/CMakeLists.txt +++ b/modules/features2d/CMakeLists.txt @@ -1,2 +1,2 @@ set(the_description "2D Features Framework") -ocv_define_module(features2d opencv_imgproc opencv_ml opencv_flann OPTIONAL opencv_highgui WRAP java) +ocv_define_module(features2d opencv_imgproc opencv_ml opencv_flann OPTIONAL opencv_highgui WRAP java python) diff --git a/modules/flann/CMakeLists.txt b/modules/flann/CMakeLists.txt index a6326c40a0..78e041129b 100644 --- a/modules/flann/CMakeLists.txt +++ b/modules/flann/CMakeLists.txt @@ -1,2 +1,2 @@ set(the_description "Clustering and Search in Multi-Dimensional Spaces") -ocv_define_module(flann opencv_core) +ocv_define_module(flann opencv_core WRAP python) diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt index 174a620020..e9d496f33b 100644 --- a/modules/highgui/CMakeLists.txt +++ b/modules/highgui/CMakeLists.txt @@ -1,5 +1,5 @@ set(the_description "High-level GUI and Media I/O") -ocv_add_module(highgui opencv_imgproc opencv_imgcodecs opencv_videoio OPTIONAL opencv_androidcamera) +ocv_add_module(highgui opencv_imgproc opencv_imgcodecs opencv_videoio OPTIONAL opencv_androidcamera WRAP python) # ---------------------------------------------------------------------------- # CMake file for highgui. See root CMakeLists.txt diff --git a/modules/imgcodecs/CMakeLists.txt b/modules/imgcodecs/CMakeLists.txt index 0d3bd52f8b..f7bd8f4b11 100644 --- a/modules/imgcodecs/CMakeLists.txt +++ b/modules/imgcodecs/CMakeLists.txt @@ -1,5 +1,5 @@ set(the_description "Image codecs") -ocv_add_module(imgcodecs opencv_imgproc WRAP java) +ocv_add_module(imgcodecs opencv_imgproc WRAP java python) # ---------------------------------------------------------------------------- # CMake file for imgcodecs. See root CMakeLists.txt diff --git a/modules/imgproc/CMakeLists.txt b/modules/imgproc/CMakeLists.txt index 10bc5f0de8..afe89aaa1e 100644 --- a/modules/imgproc/CMakeLists.txt +++ b/modules/imgproc/CMakeLists.txt @@ -1,2 +1,2 @@ set(the_description "Image Processing") -ocv_define_module(imgproc opencv_core WRAP java) +ocv_define_module(imgproc opencv_core WRAP java python) diff --git a/modules/java/CMakeLists.txt b/modules/java/CMakeLists.txt index bf2e5598bb..7acc4dfb73 100644 --- a/modules/java/CMakeLists.txt +++ b/modules/java/CMakeLists.txt @@ -20,13 +20,13 @@ set(JAVA_INSTALL_ROOT "sdk/java") set(JNI_INSTALL_ROOT "sdk/native") # get list of modules to wrap -message(STATUS "Wrapped in java:") +# message(STATUS "Wrapped in java:") set(OPENCV_JAVA_MODULES) foreach(m ${OPENCV_MODULES_BUILD}) if (";${OPENCV_MODULE_${m}_WRAPPERS};" MATCHES ";java;" AND HAVE_${m}) string(REPLACE "opencv_" "" m ${m}) list(APPEND OPENCV_JAVA_MODULES ${m}) - message(STATUS "\topencv_${m}") + # message(STATUS "\topencv_${m}") endif() endforeach() diff --git a/modules/objdetect/CMakeLists.txt b/modules/objdetect/CMakeLists.txt index 1f3844a263..d42e9e8f11 100644 --- a/modules/objdetect/CMakeLists.txt +++ b/modules/objdetect/CMakeLists.txt @@ -1,2 +1,2 @@ set(the_description "Object Detection") -ocv_define_module(objdetect opencv_core opencv_imgproc opencv_ml OPTIONAL opencv_highgui WRAP java) +ocv_define_module(objdetect opencv_core opencv_imgproc opencv_ml OPTIONAL opencv_highgui WRAP java python) diff --git a/modules/photo/CMakeLists.txt b/modules/photo/CMakeLists.txt index 725f2bfdfe..88ac35d83f 100644 --- a/modules/photo/CMakeLists.txt +++ b/modules/photo/CMakeLists.txt @@ -4,4 +4,4 @@ if(HAVE_CUDA) ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations) endif() -ocv_define_module(photo opencv_imgproc OPTIONAL opencv_cudaarithm opencv_cudaimgproc WRAP java) +ocv_define_module(photo opencv_imgproc OPTIONAL opencv_cudaarithm opencv_cudaimgproc WRAP java python) diff --git a/modules/python/common.cmake b/modules/python/common.cmake index a082d0777a..b09b721925 100644 --- a/modules/python/common.cmake +++ b/modules/python/common.cmake @@ -1,28 +1,7 @@ # This file is included from a subdirectory set(PYTHON_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../") -set(candidate_deps "") -foreach(mp ${OPENCV_MODULES_PATH} ${OPENCV_EXTRA_MODULES_PATH}) - file(GLOB names "${mp}/*") - foreach(m IN LISTS names) - if(IS_DIRECTORY ${m}) - get_filename_component(m ${m} NAME) - list(APPEND candidate_deps "opencv_${m}") - endif() - endforeach(m) -endforeach(mp) - -# module blacklist -ocv_list_filterout(candidate_deps "^opencv_cud(a|ev)") -ocv_list_filterout(candidate_deps "^opencv_matlab$") -ocv_list_filterout(candidate_deps "^opencv_ts$") -ocv_list_filterout(candidate_deps "^opencv_adas$") -ocv_list_filterout(candidate_deps "^opencv_tracking$") -ocv_list_filterout(candidate_deps "^opencv_bioinspired$") -ocv_list_filterout(candidate_deps "^opencv_java$") -ocv_list_filterout(candidate_deps "^opencv_contrib_world$") - -ocv_add_module(${MODULE_NAME} BINDINGS OPTIONAL ${candidate_deps}) +ocv_add_module(${MODULE_NAME} BINDINGS) ocv_module_include_directories( "${PYTHON_INCLUDE_PATH}" @@ -30,16 +9,25 @@ ocv_module_include_directories( "${PYTHON_SOURCE_DIR}/src2" ) +# get list of modules to wrap +# message(STATUS "Wrapped in ${MODULE_NAME}:") +set(OPENCV_PYTHON_MODULES) +foreach(m ${OPENCV_MODULES_BUILD}) + if (";${OPENCV_MODULE_${m}_WRAPPERS};" MATCHES ";${MODULE_NAME};" AND HAVE_${m}) + list(APPEND OPENCV_PYTHON_MODULES ${m}) + # message(STATUS "\t${m}") + endif() +endforeach() + set(opencv_hdrs "") -foreach(m IN LISTS OPENCV_MODULE_opencv_${MODULE_NAME}_DEPS) - list(APPEND opencv_hdrs ${OPENCV_MODULE_${m}_HEADERS}) +foreach(m ${OPENCV_PYTHON_MODULES}) + list(APPEND opencv_hdrs ${OPENCV_MODULE_${m}_HEADERS}) endforeach(m) # header blacklist ocv_list_filterout(opencv_hdrs ".h$") ocv_list_filterout(opencv_hdrs "cuda") ocv_list_filterout(opencv_hdrs "cudev") -ocv_list_filterout(opencv_hdrs "opencv2/objdetect/detection_based_tracker.hpp") set(cv2_generated_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_include.h" diff --git a/modules/shape/CMakeLists.txt b/modules/shape/CMakeLists.txt index 77150c4dea..fcd317089a 100644 --- a/modules/shape/CMakeLists.txt +++ b/modules/shape/CMakeLists.txt @@ -1,2 +1,2 @@ set(the_description "Shape descriptors and matchers.") -ocv_define_module(shape opencv_core opencv_imgproc opencv_video) +ocv_define_module(shape opencv_core opencv_imgproc opencv_video WRAP python) diff --git a/modules/stitching/CMakeLists.txt b/modules/stitching/CMakeLists.txt index 8650f7280e..9a24f43160 100644 --- a/modules/stitching/CMakeLists.txt +++ b/modules/stitching/CMakeLists.txt @@ -5,4 +5,5 @@ if(HAVE_CUDA) endif() ocv_define_module(stitching opencv_imgproc opencv_features2d opencv_calib3d opencv_objdetect - OPTIONAL opencv_cudaarithm opencv_cudafilters opencv_cudafeatures2d opencv_cudalegacy opencv_xfeatures2d) + OPTIONAL opencv_cudaarithm opencv_cudafilters opencv_cudafeatures2d opencv_cudalegacy opencv_xfeatures2d + WRAP python) diff --git a/modules/superres/CMakeLists.txt b/modules/superres/CMakeLists.txt index f85cf20736..03809ef66b 100644 --- a/modules/superres/CMakeLists.txt +++ b/modules/superres/CMakeLists.txt @@ -5,4 +5,5 @@ endif() set(the_description "Super Resolution") ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 -Wundef -Wshadow) ocv_define_module(superres opencv_imgproc opencv_video - OPTIONAL opencv_videoio opencv_cudaarithm opencv_cudafilters opencv_cudawarping opencv_cudaimgproc opencv_cudaoptflow opencv_cudacodec) + OPTIONAL opencv_videoio opencv_cudaarithm opencv_cudafilters opencv_cudawarping opencv_cudaimgproc opencv_cudaoptflow opencv_cudacodec + WRAP python) diff --git a/modules/video/CMakeLists.txt b/modules/video/CMakeLists.txt index 57d86f08b3..15705cfc3a 100644 --- a/modules/video/CMakeLists.txt +++ b/modules/video/CMakeLists.txt @@ -1,2 +1,2 @@ set(the_description "Video Analysis") -ocv_define_module(video opencv_imgproc WRAP java) +ocv_define_module(video opencv_imgproc WRAP java python) diff --git a/modules/videoio/CMakeLists.txt b/modules/videoio/CMakeLists.txt index f52e69e95d..61a517a87b 100644 --- a/modules/videoio/CMakeLists.txt +++ b/modules/videoio/CMakeLists.txt @@ -1,5 +1,5 @@ set(the_description "Media I/O") -ocv_add_module(videoio opencv_imgproc opencv_imgcodecs OPTIONAL opencv_androidcamera WRAP java) +ocv_add_module(videoio opencv_imgproc opencv_imgcodecs OPTIONAL opencv_androidcamera WRAP java python) # ---------------------------------------------------------------------------- # CMake file for videoio. See root CMakeLists.txt diff --git a/modules/videostab/CMakeLists.txt b/modules/videostab/CMakeLists.txt index f57a5d2151..8f7ae830a8 100644 --- a/modules/videostab/CMakeLists.txt +++ b/modules/videostab/CMakeLists.txt @@ -5,4 +5,4 @@ if(HAVE_CUDA) endif() ocv_define_module(videostab opencv_imgproc opencv_features2d opencv_video opencv_photo opencv_calib3d - OPTIONAL opencv_cudawarping opencv_cudaoptflow opencv_videoio) +OPTIONAL opencv_cudawarping opencv_cudaoptflow opencv_videoio WRAP python) diff --git a/modules/viz/CMakeLists.txt b/modules/viz/CMakeLists.txt index 7fddb53880..9fd0301635 100644 --- a/modules/viz/CMakeLists.txt +++ b/modules/viz/CMakeLists.txt @@ -4,7 +4,7 @@ endif() include(${VTK_USE_FILE}) set(the_description "Viz") -ocv_define_module(viz opencv_core ${VTK_LIBRARIES}) +ocv_define_module(viz opencv_core ${VTK_LIBRARIES} WRAP python) if(APPLE AND BUILD_opencv_viz) ocv_target_link_libraries(opencv_viz "-framework Cocoa")