diff --git a/modules/python/CMakeLists.txt b/modules/python/CMakeLists.txt index b537123dc..91246563e 100644 --- a/modules/python/CMakeLists.txt +++ b/modules/python/CMakeLists.txt @@ -5,7 +5,7 @@ project(opencv_python) include_directories(${PYTHON_INCLUDE_PATH}) include_directories( - ${CMAKE_CURRENT_SOURCE_DIR} + "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/modules/core/include" "${CMAKE_SOURCE_DIR}/modules/imgproc/include" "${CMAKE_SOURCE_DIR}/modules/video/include" @@ -30,7 +30,7 @@ set(opencv_hdrs "${CMAKE_SOURCE_DIR}/modules/core/include/opencv2/core/core.hpp" "${CMAKE_SOURCE_DIR}/modules/features2d/include/opencv2/features2d/features2d.hpp" "${CMAKE_SOURCE_DIR}/modules/calib3d/include/opencv2/calib3d/calib3d.hpp" "${CMAKE_SOURCE_DIR}/modules/objdetect/include/opencv2/objdetect/objdetect.hpp" - "${CMAKE_SOURCE_DIR}/modules/python/opencv_extra_api.hpp") + "${CMAKE_SOURCE_DIR}/modules/python/src/opencv_extra_api.hpp") set(generated_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_funcs.h" @@ -43,27 +43,27 @@ if(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3") endif() -file(GLOB lib_srcs "*.cpp") -file(GLOB lib_hdrs "*.h") +file(GLOB lib_srcs "src/*.cpp") +file(GLOB lib_hdrs "src/*.h") add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated0.i - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/gen.py ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/api - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/defs - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen.py + COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/src/gen.py" "${CMAKE_CURRENT_SOURCE_DIR}/src" + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/api + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/defs + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/gen.py ) add_custom_command( OUTPUT ${generated_hdrs} - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/gen2.py ${CMAKE_CURRENT_BINARY_DIR} ${opencv_hdrs} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen2.py - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/hdr_parser.py + COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/src/gen2.py" ${CMAKE_CURRENT_BINARY_DIR} ${opencv_hdrs} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/gen2.py + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/hdr_parser.py DEPENDS ${opencv_hdrs} ) set(the_target "opencv_python") -add_library(${the_target} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs} ${CMAKE_CURRENT_BINARY_DIR}/generated0.i opencv2x.h opencv_extra_api.hpp ${generated_hdrs}) +add_library(${the_target} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs} ${CMAKE_CURRENT_BINARY_DIR}/generated0.i src/opencv2x.h src/opencv_extra_api.hpp ${generated_hdrs}) target_link_libraries(${the_target} ${PYTHON_LIBRARIES} opencv_core opencv_imgproc opencv_video opencv_ml opencv_features2d opencv_highgui opencv_calib3d opencv_objdetect opencv_legacy opencv_contrib) set_target_properties(${the_target} PROPERTIES PREFIX "") diff --git a/modules/python/hdr_parser.pyc b/modules/python/hdr_parser.pyc new file mode 100755 index 000000000..b3e9a5d65 Binary files /dev/null and b/modules/python/hdr_parser.pyc differ diff --git a/modules/python/api b/modules/python/src/api similarity index 100% rename from modules/python/api rename to modules/python/src/api diff --git a/modules/python/cv.cpp b/modules/python/src/cv.cpp similarity index 99% rename from modules/python/cv.cpp rename to modules/python/src/cv.cpp index ce56ab416..0280fcd9f 100644 --- a/modules/python/cv.cpp +++ b/modules/python/src/cv.cpp @@ -3946,7 +3946,7 @@ static double cppKMeans(const CvArr* _samples, int cluster_count, CvArr* _labels (labels.cols == 1 || labels.rows == 1) && labels.cols + labels.rows - 1 == data.rows ); return cv::kmeans(data, cluster_count, labels, termcrit, attempts, - flags, _centers ? ¢ers : 0 ); + flags, _centers ? cv::OutputArray(centers) : cv::OutputArray() ); } #define cvKMeans2(samples, nclusters, labels, termcrit, attempts, flags, centers) \ @@ -4038,7 +4038,7 @@ void initcv() m = Py_InitModule(MODULESTR"", methods); d = PyModule_GetDict(m); - PyDict_SetItemString(d, "__version__", PyString_FromString("$Rev$")); + PyDict_SetItemString(d, "__version__", PyString_FromString("$Rev: 4557 $")); opencv_error = PyErr_NewException((char*)MODULESTR".error", NULL, NULL); PyDict_SetItemString(d, "error", opencv_error); diff --git a/modules/python/defs b/modules/python/src/defs similarity index 100% rename from modules/python/defs rename to modules/python/src/defs diff --git a/modules/python/gen.py b/modules/python/src/gen.py similarity index 100% rename from modules/python/gen.py rename to modules/python/src/gen.py diff --git a/modules/python/gen2.py b/modules/python/src/gen2.py similarity index 100% rename from modules/python/gen2.py rename to modules/python/src/gen2.py diff --git a/modules/python/hdr_parser.py b/modules/python/src/hdr_parser.py similarity index 94% rename from modules/python/hdr_parser.py rename to modules/python/src/hdr_parser.py index 043f3a83c..4924d34a1 100755 --- a/modules/python/hdr_parser.py +++ b/modules/python/src/hdr_parser.py @@ -2,15 +2,15 @@ import os, sys, re # the list only for debugging. The real list, used in the real OpenCV build, is specified in CMakeLists.txt opencv_hdr_list = [ -"../core/include/opencv2/core/core.hpp", -"../ml/include/opencv2/ml/ml.hpp", -"../imgproc/include/opencv2/imgproc/imgproc.hpp", -"../calib3d/include/opencv2/calib3d/calib3d.hpp", -"../features2d/include/opencv2/features2d/features2d.hpp", -"../video/include/opencv2/video/tracking.hpp", -"../video/include/opencv2/video/background_segm.hpp", -"../objdetect/include/opencv2/objdetect/objdetect.hpp", -"../highgui/include/opencv2/highgui/highgui.hpp", +"../../core/include/opencv2/core/core.hpp", +"../../ml/include/opencv2/ml/ml.hpp", +"../../imgproc/include/opencv2/imgproc/imgproc.hpp", +"../../calib3d/include/opencv2/calib3d/calib3d.hpp", +"../../features2d/include/opencv2/features2d/features2d.hpp", +"../../video/include/opencv2/video/tracking.hpp", +"../../video/include/opencv2/video/background_segm.hpp", +"../../objdetect/include/opencv2/objdetect/objdetect.hpp", +"../../highgui/include/opencv2/highgui/highgui.hpp", "opencv_extra_api.hpp", ] @@ -192,7 +192,7 @@ class CppHeaderParser(object): arg_type += "*" arg_type = self.batch_replace(arg_type, [("std::", ""), ("cv::", "")]) - + return arg_type, arg_name, modlist, argno def parse_enum(self, decl_str): @@ -375,6 +375,22 @@ class CppHeaderParser(object): if eqpos >= 0: a = a[:eqpos].strip() arg_type, arg_name, modlist, argno = self.parse_arg(a, argno) + if arg_type == "InputArray" or arg_type == "InputOutputArray": + arg_type = "Mat" + elif arg_type == "OutputArray": + arg_type = "Mat" + modlist.append("/O") + elif arg_type == "InputArrayOfArrays" or arg_type == "InputOutputArrayOfArrays": + arg_type = "vector_Mat" + elif arg_type == "OutputArrayOfArrays": + arg_type = "vector_Mat" + modlist.append("/O") + defval = self.batch_replace(defval, [("InputArrayOfArrays", "vector"), + ("InputOutputArrayOfArrays", "vector"), + ("OutputArrayOfArrays", "vector"), + ("InputArray", "Mat"), + ("InputOutputArray", "Mat"), + ("OutputArray", "Mat")]).strip() args.append([arg_type, arg_name, defval, modlist]) npos = arg_start-1 diff --git a/modules/python/src/hdr_parser.pyc b/modules/python/src/hdr_parser.pyc new file mode 100755 index 000000000..cc852e413 Binary files /dev/null and b/modules/python/src/hdr_parser.pyc differ diff --git a/modules/python/opencv2x.h b/modules/python/src/opencv2x.h similarity index 100% rename from modules/python/opencv2x.h rename to modules/python/src/opencv2x.h diff --git a/modules/python/opencv_extra_api.hpp b/modules/python/src/opencv_extra_api.hpp similarity index 100% rename from modules/python/opencv_extra_api.hpp rename to modules/python/src/opencv_extra_api.hpp