embeded cv Python module into cv2.

pull/13383/head
Vadim Pisarevsky 14 years ago
parent 9b464199d6
commit 569b1ad582
  1. 2
      CMakeLists.txt
  2. 2
      modules/CMakeLists.txt
  3. 2
      modules/core/doc/old_basic_structures.rst
  4. 68
      modules/python/CMakeLists.txt
  5. 0
      modules/python/src2/api
  6. 10
      modules/python/src2/cv2.cpp
  7. 176
      modules/python/src2/cv2.cv.hpp
  8. 0
      modules/python/src2/defs
  9. 0
      modules/python/src2/gen.py
  10. 2
      modules/python/test/calchist.py
  11. 2
      modules/python/test/camera_calibration.py
  12. 2
      modules/python/test/findstereocorrespondence.py
  13. 2
      modules/python/test/goodfeatures.py
  14. 2
      modules/python/test/leak1.py
  15. 2
      modules/python/test/leak2.py
  16. 2
      modules/python/test/leak3.py
  17. 2
      modules/python/test/leak4.py
  18. 2
      modules/python/test/precornerdetect.py
  19. 2
      modules/python/test/test.py
  20. 2
      modules/python/test/ticket_6.py
  21. 2
      modules/python/test/tickets.py
  22. 62
      modules/video/test/test_main.cpp
  23. 2
      samples/python/camera.py
  24. 2
      samples/python/camshift.py
  25. 2
      samples/python/chessboard.py
  26. 2
      samples/python/contours.py
  27. 2
      samples/python/convexhull.py
  28. 2
      samples/python/cv20squares.py
  29. 2
      samples/python/cvutils.py
  30. 2
      samples/python/delaunay.py
  31. 2
      samples/python/demhist.py
  32. 2
      samples/python/dft.py
  33. 2
      samples/python/distrans.py
  34. 2
      samples/python/dmtx.py
  35. 2
      samples/python/drawing.py
  36. 2
      samples/python/edge.py
  37. 2
      samples/python/facedetect.py
  38. 2
      samples/python/ffilldemo.py
  39. 2
      samples/python/fitellipse.py
  40. 2
      samples/python/houghlines.py
  41. 2
      samples/python/inpaint.py
  42. 2
      samples/python/kalman.py
  43. 2
      samples/python/kmeans.py
  44. 2
      samples/python/laplace.py
  45. 2
      samples/python/lkdemo.py
  46. 2
      samples/python/logpolar.py
  47. 2
      samples/python/minarea.py
  48. 2
      samples/python/minidemo.py
  49. 2
      samples/python/morphology.py
  50. 2
      samples/python/motempl.py
  51. 2
      samples/python/numpy_array.py
  52. 2
      samples/python/numpy_warhol.py
  53. 2
      samples/python/pyramid_segmentation.py
  54. 2
      samples/python/squares.py
  55. 2
      samples/python/watershed.py

@ -1611,7 +1611,7 @@ status("")
status(" Interfaces:") status(" Interfaces:")
status(" Python:" BUILD_NEW_PYTHON_SUPPORT THEN YES ELSE NO) status(" Python:" BUILD_NEW_PYTHON_SUPPORT THEN YES ELSE NO)
status(" Python interpreter:" PYTHON_EXECUTABLE THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_MAJOR_MINOR})" ELSE NO) status(" Python interpreter:" PYTHON_EXECUTABLE THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_MAJOR_MINOR})" ELSE NO)
status(" Python numpy:" PYTHON_USE_NUMPY THEN YES ELSE "NO (Python interface will not cover OpenCV 2.x API)") status(" Python numpy:" PYTHON_USE_NUMPY THEN YES ELSE "NO (Python wrappers will not be generated)")
if(ANDROID AND ANDROID_API_LEVEL LESS 8) if(ANDROID AND ANDROID_API_LEVEL LESS 8)
status(" Java:" "NO (Java API requires Android API level 8 or higher)") status(" Java:" "NO (Java API requires Android API level 8 or higher)")
else() else()

@ -24,7 +24,7 @@ add_subdirectory(contrib)
add_subdirectory(ml) add_subdirectory(ml)
add_subdirectory(objdetect) add_subdirectory(objdetect)
if(PYTHONLIBS_FOUND AND BUILD_NEW_PYTHON_SUPPORT) if(PYTHONLIBS_FOUND AND BUILD_NEW_PYTHON_SUPPORT AND PYTHON_USE_NUMPY)
add_subdirectory(python) add_subdirectory(python)
endif() endif()

@ -1729,7 +1729,7 @@ For example, `NumPy <http://numpy.scipy.org/>`_ arrays support the array interfa
.. code-block::python .. code-block::python
>>> import cv, numpy >>> import cv2.cv as cv, numpy
>>> a = numpy.ones((480, 640)) >>> a = numpy.ones((480, 640))
>>> mat = cv.fromarray(a) >>> mat = cv.fromarray(a)
>>> print cv.GetDims(mat), cv.CV_MAT_CN(cv.GetElemType(mat)) >>> print cv.GetDims(mat), cv.CV_MAT_CN(cv.GetElemType(mat))

@ -5,7 +5,6 @@ project(opencv_python)
include_directories(${PYTHON_INCLUDE_PATH}) include_directories(${PYTHON_INCLUDE_PATH})
include_directories( include_directories(
"${CMAKE_CURRENT_SOURCE_DIR}/src1"
"${CMAKE_CURRENT_SOURCE_DIR}/src2" "${CMAKE_CURRENT_SOURCE_DIR}/src2"
"${OpenCV_SOURCE_DIR}/modules/core/include" "${OpenCV_SOURCE_DIR}/modules/core/include"
"${OpenCV_SOURCE_DIR}/modules/imgproc/include" "${OpenCV_SOURCE_DIR}/modules/imgproc/include"
@ -37,37 +36,6 @@ if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
endif() endif()
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated0.i
COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/src1/gen.py" "${CMAKE_CURRENT_SOURCE_DIR}/src1"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src1/api
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src1/defs
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src1/gen.py
)
set(cv_target "opencv_python")
add_library(${cv_target} SHARED src1/cv.cpp ${CMAKE_CURRENT_BINARY_DIR}/generated0.i)
target_link_libraries(${cv_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(${cv_target} PROPERTIES PREFIX "")
set_target_properties(${cv_target} PROPERTIES OUTPUT_NAME "cv")
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('SO')"
RESULT_VARIABLE PYTHON_CVPY_PROCESS
OUTPUT_VARIABLE CVPY_SUFFIX
OUTPUT_STRIP_TRAILING_WHITESPACE)
set_target_properties(${cv_target} PROPERTIES SUFFIX ${CVPY_SUFFIX})
if (MSVC AND NOT BUILD_SHARED_LIBS)
set_target_properties(${cv_target} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /DEBUG")
endif()
set(cvpymodules ${cv_target})
if(PYTHON_USE_NUMPY)
set(cv2_generated_hdrs set(cv2_generated_hdrs
"${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_funcs.h" "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_funcs.h"
"${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_func_tab.h" "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_func_tab.h"
@ -75,28 +43,41 @@ set(cv2_generated_hdrs
"${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_type_reg.h" "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_type_reg.h"
"${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_const_reg.h") "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_const_reg.h")
add_custom_command( add_custom_command(
OUTPUT ${cv2_generated_hdrs} OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated0.i
COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/src2/gen2.py" ${CMAKE_CURRENT_BINARY_DIR} ${opencv_hdrs} COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/src2/gen.py" "${CMAKE_CURRENT_SOURCE_DIR}/src2"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/gen2.py DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/api
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/hdr_parser.py DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/defs
DEPENDS ${opencv_hdrs}) DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/gen.py
)
set(cv2_target "opencv2_python") add_custom_command(
add_library(${cv2_target} SHARED src2/cv2.cpp src2/opencv_extra_api.hpp ${cv2_generated_hdrs}) OUTPUT ${cv2_generated_hdrs}
COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/src2/gen2.py" ${CMAKE_CURRENT_BINARY_DIR} ${opencv_hdrs}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/gen2.py
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/hdr_parser.py
DEPENDS ${opencv_hdrs})
set(cv2_target "opencv_python")
add_library(${cv2_target} SHARED src2/cv2.cpp ${CMAKE_CURRENT_BINARY_DIR}/generated0.i src2/opencv_extra_api.hpp ${cv2_generated_hdrs} src2/cv2.cv.hpp)
target_link_libraries(${cv2_target} ${PYTHON_LIBRARIES} opencv_core opencv_imgproc opencv_video opencv_ml opencv_features2d opencv_highgui opencv_calib3d opencv_objdetect opencv_legacy opencv_contrib) target_link_libraries(${cv2_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(${cv2_target} PROPERTIES PREFIX "") set_target_properties(${cv2_target} PROPERTIES PREFIX "")
set_target_properties(${cv2_target} PROPERTIES OUTPUT_NAME "cv2") set_target_properties(${cv2_target} PROPERTIES OUTPUT_NAME "cv2")
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('SO')"
RESULT_VARIABLE PYTHON_CVPY_PROCESS
OUTPUT_VARIABLE CVPY_SUFFIX
OUTPUT_STRIP_TRAILING_WHITESPACE)
set_target_properties(${cv2_target} PROPERTIES SUFFIX ${CVPY_SUFFIX}) set_target_properties(${cv2_target} PROPERTIES SUFFIX ${CVPY_SUFFIX})
if (MSVC AND NOT BUILD_SHARED_LIBS) if (MSVC AND NOT BUILD_SHARED_LIBS)
set_target_properties(${cv2_target} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /DEBUG") set_target_properties(${cv2_target} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /DEBUG")
endif() endif()
set(cvpymodules ${cvpymodules} ${cv2_target}) set(cvpymodules ${cv2_target})
endif()
if(WIN32) if(WIN32)
install(TARGETS ${cvpymodules} install(TARGETS ${cvpymodules}
@ -105,7 +86,6 @@ if(WIN32)
ARCHIVE DESTINATION "Python${PYTHON_VERSION_MAJOR_MINOR}/Lib/site-packages" COMPONENT main ARCHIVE DESTINATION "Python${PYTHON_VERSION_MAJOR_MINOR}/Lib/site-packages" COMPONENT main
) )
else() else()
#install(FILES ${LIBRARY_OUTPUT_PATH}/cv${CVPY_SUFFIX} DESTINATION ${PYTHON_PACKAGES_PATH})
install(TARGETS ${cvpymodules} install(TARGETS ${cvpymodules}
RUNTIME DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT main RUNTIME DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT main
LIBRARY DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT main LIBRARY DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT main

@ -833,6 +833,8 @@ static int to_ok(PyTypeObject *to)
return (PyType_Ready(to) == 0); return (PyType_Ready(to) == 0);
} }
#include "cv2.cv.hpp"
extern "C" extern "C"
#if defined WIN32 || defined _WIN32 #if defined WIN32 || defined _WIN32
__declspec(dllexport) __declspec(dllexport)
@ -848,16 +850,17 @@ void initcv2()
#include "pyopencv_generated_type_reg.h" #include "pyopencv_generated_type_reg.h"
#endif #endif
PyObject* m = Py_InitModule(MODULESTR"", methods); PyObject* m = Py_InitModule(MODULESTR, methods);
PyObject* d = PyModule_GetDict(m); PyObject* d = PyModule_GetDict(m);
PyDict_SetItemString(d, "__version__", PyString_FromString("$Rev: 4557 $")); PyDict_SetItemString(d, "__version__", PyString_FromString("$Rev: 4557 $"));
opencv_error = PyErr_NewException((char*)MODULESTR".error", NULL, NULL); opencv_error = PyErr_NewException((char*)MODULESTR".error", NULL, NULL);
PyDict_SetItemString(d, "error", opencv_error); PyDict_SetItemString(d, "error", opencv_error);
PyObject* cv_m = init_cv();
// AFAIK the only floating-point constant PyDict_SetItemString(d, "cv", cv_m);
PyDict_SetItemString(d, "CV_PI", PyFloat_FromDouble(CV_PI));
#define PUBLISH(I) PyDict_SetItemString(d, #I, PyInt_FromLong(I)) #define PUBLISH(I) PyDict_SetItemString(d, #I, PyInt_FromLong(I))
#define PUBLISHU(I) PyDict_SetItemString(d, #I, PyLong_FromUnsignedLong(I)) #define PUBLISHU(I) PyDict_SetItemString(d, #I, PyLong_FromUnsignedLong(I))
@ -942,7 +945,6 @@ void initcv2()
PUBLISH(CV_AA); PUBLISH(CV_AA);
#include "pyopencv_generated_const_reg.h" #include "pyopencv_generated_const_reg.h"
} }

@ -1,16 +1,7 @@
#include <Python.h> #include "opencv2/legacy/legacy.hpp"
#include "opencv2/legacy/compat.hpp"
#include <assert.h> #define OLD_MODULESTR "cv2.cv"
#include "opencv/cxcore.h"
#include "opencv/cv.h"
#include "opencv/cvaux.h"
#include "opencv/cvwimage.h"
#include "opencv/highgui.h"
#define MODULESTR "cv"
static PyObject *opencv_error;
struct memtrack_t { struct memtrack_t {
PyObject_HEAD PyObject_HEAD
@ -168,21 +159,6 @@ static void translate_error_to_exception(void)
/************************************************************************/ /************************************************************************/
static int failmsg(const char *fmt, ...)
{
char str[1000];
va_list ap;
va_start(ap, fmt);
vsnprintf(str, sizeof(str), fmt, ap);
va_end(ap);
PyErr_SetString(PyExc_TypeError, str);
return 0;
}
/************************************************************************/
/* These get/setters are polymorphic, used in both iplimage and cvmat */ /* These get/setters are polymorphic, used in both iplimage and cvmat */
static PyObject *PyObject_FromCvScalar(CvScalar s, int type) static PyObject *PyObject_FromCvScalar(CvScalar s, int type)
@ -355,7 +331,7 @@ static PyMappingMethods iplimage_as_map = {
static PyTypeObject iplimage_Type = { static PyTypeObject iplimage_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".iplimage", /*name*/ OLD_MODULESTR".iplimage", /*name*/
sizeof(iplimage_t), /*basicsize*/ sizeof(iplimage_t), /*basicsize*/
}; };
@ -665,7 +641,7 @@ static PyMappingMethods cvmat_as_map = {
static PyTypeObject cvmat_Type = { static PyTypeObject cvmat_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvmat", /*name*/ OLD_MODULESTR".cvmat", /*name*/
sizeof(cvmat_t), /*basicsize*/ sizeof(cvmat_t), /*basicsize*/
}; };
@ -830,7 +806,7 @@ static PyMappingMethods cvmatnd_as_map = {
static PyTypeObject cvmatnd_Type = { static PyTypeObject cvmatnd_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvmatnd", /*name*/ OLD_MODULESTR".cvmatnd", /*name*/
sizeof(cvmatnd_t), /*basicsize*/ sizeof(cvmatnd_t), /*basicsize*/
}; };
@ -862,7 +838,7 @@ static void cvhistogram_dealloc(PyObject *self)
static PyTypeObject cvhistogram_Type = { static PyTypeObject cvhistogram_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvhistogram", /*name*/ OLD_MODULESTR".cvhistogram", /*name*/
sizeof(cvhistogram_t), /*basicsize*/ sizeof(cvhistogram_t), /*basicsize*/
}; };
@ -915,7 +891,7 @@ static PyObject *cvlineiterator_next(PyObject *o)
static PyTypeObject cvlineiterator_Type = { static PyTypeObject cvlineiterator_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvlineiterator", /*name*/ OLD_MODULESTR".cvlineiterator", /*name*/
sizeof(cvlineiterator_t), /*basicsize*/ sizeof(cvlineiterator_t), /*basicsize*/
}; };
@ -958,7 +934,7 @@ static void memtrack_dealloc(PyObject *self)
static PyTypeObject memtrack_Type = { static PyTypeObject memtrack_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".memtrack", /*name*/ OLD_MODULESTR".memtrack", /*name*/
sizeof(memtrack_t), /*basicsize*/ sizeof(memtrack_t), /*basicsize*/
}; };
@ -1005,7 +981,7 @@ static void cvmemstorage_dealloc(PyObject *self)
static PyTypeObject cvmemstorage_Type = { static PyTypeObject cvmemstorage_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvmemstorage", /*name*/ OLD_MODULESTR".cvmemstorage", /*name*/
sizeof(cvmemstorage_t), /*basicsize*/ sizeof(cvmemstorage_t), /*basicsize*/
}; };
@ -1021,7 +997,7 @@ static void cvmemstorage_specials(void)
static PyTypeObject cvfont_Type = { static PyTypeObject cvfont_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvfont", /*name*/ OLD_MODULESTR".cvfont", /*name*/
sizeof(cvfont_t), /*basicsize*/ sizeof(cvfont_t), /*basicsize*/
}; };
@ -1034,7 +1010,7 @@ static void cvfont_specials(void) { }
static PyTypeObject cvrng_Type = { static PyTypeObject cvrng_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvrng", /*name*/ OLD_MODULESTR".cvrng", /*name*/
sizeof(cvrng_t), /*basicsize*/ sizeof(cvrng_t), /*basicsize*/
}; };
@ -1049,7 +1025,7 @@ static void cvrng_specials(void)
static PyTypeObject cvcontourtree_Type = { static PyTypeObject cvcontourtree_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvcontourtree", /*name*/ OLD_MODULESTR".cvcontourtree", /*name*/
sizeof(cvcontourtree_t), /*basicsize*/ sizeof(cvcontourtree_t), /*basicsize*/
}; };
@ -1063,7 +1039,7 @@ static void cvcontourtree_specials(void) { }
static PyTypeObject cvsubdiv2dedge_Type = { static PyTypeObject cvsubdiv2dedge_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvsubdiv2dedge", /*name*/ OLD_MODULESTR".cvsubdiv2dedge", /*name*/
sizeof(cvsubdiv2dedge_t), /*basicsize*/ sizeof(cvsubdiv2dedge_t), /*basicsize*/
}; };
@ -1246,7 +1222,7 @@ static PyMappingMethods cvseq_mapping = {
static PyTypeObject cvseq_Type = { static PyTypeObject cvseq_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvseq", /*name*/ OLD_MODULESTR".cvseq", /*name*/
sizeof(cvseq_t), /*basicsize*/ sizeof(cvseq_t), /*basicsize*/
}; };
@ -1294,7 +1270,7 @@ static void cvset_dealloc(PyObject *self)
static PyTypeObject cvset_Type = { static PyTypeObject cvset_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvset", /*name*/ OLD_MODULESTR".cvset", /*name*/
sizeof(cvset_t), /*basicsize*/ sizeof(cvset_t), /*basicsize*/
}; };
@ -1334,7 +1310,7 @@ static void cvset_specials(void)
static PyTypeObject cvsubdiv2d_Type = { static PyTypeObject cvsubdiv2d_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvsubdiv2d", /*name*/ OLD_MODULESTR".cvsubdiv2d", /*name*/
sizeof(cvsubdiv2d_t), /*basicsize*/ sizeof(cvsubdiv2d_t), /*basicsize*/
}; };
@ -1365,7 +1341,7 @@ static void cvsubdiv2d_specials(void)
static PyTypeObject cvsubdiv2dpoint_Type = { static PyTypeObject cvsubdiv2dpoint_Type = {
PyObject_HEAD_INIT(&PyType_Type) PyObject_HEAD_INIT(&PyType_Type)
0, /*size*/ 0, /*size*/
MODULESTR".cvsubdiv2dpoint", /*name*/ OLD_MODULESTR".cvsubdiv2dpoint", /*name*/
sizeof(cvsubdiv2dpoint_t), /*basicsize*/ sizeof(cvsubdiv2dpoint_t), /*basicsize*/
}; };
@ -3367,75 +3343,6 @@ static PyObject *pycvReshapeMatND(PyObject *self, PyObject *args)
return shareDataND(o, cva, pn); return shareDataND(o, cva, pn);
} }
static void OnMouse(int event, int x, int y, int flags, void* param)
{
PyGILState_STATE gstate;
gstate = PyGILState_Ensure();
PyObject *o = (PyObject*)param;
PyObject *args = Py_BuildValue("iiiiO", event, x, y, flags, PyTuple_GetItem(o, 1));
PyObject *r = PyObject_Call(PyTuple_GetItem(o, 0), args, NULL);
if (r == NULL)
PyErr_Print();
else
Py_DECREF(r);
Py_DECREF(args);
PyGILState_Release(gstate);
}
static PyObject *pycvSetMouseCallback(PyObject *self, PyObject *args, PyObject *kw)
{
const char *keywords[] = { "window_name", "on_mouse", "param", NULL };
char* name;
PyObject *on_mouse;
PyObject *param = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|O", (char**)keywords, &name, &on_mouse, &param))
return NULL;
if (!PyCallable_Check(on_mouse)) {
PyErr_SetString(PyExc_TypeError, "on_mouse must be callable");
return NULL;
}
if (param == NULL) {
param = Py_None;
}
ERRWRAP(cvSetMouseCallback(name, OnMouse, Py_BuildValue("OO", on_mouse, param)));
Py_RETURN_NONE;
}
void OnChange(int pos, void *param)
{
PyGILState_STATE gstate;
gstate = PyGILState_Ensure();
PyObject *o = (PyObject*)param;
PyObject *args = Py_BuildValue("(i)", pos);
PyObject *r = PyObject_Call(PyTuple_GetItem(o, 0), args, NULL);
if (r == NULL)
PyErr_Print();
Py_DECREF(args);
PyGILState_Release(gstate);
}
static PyObject *pycvCreateTrackbar(PyObject *self, PyObject *args)
{
PyObject *on_change;
char* trackbar_name;
char* window_name;
int *value = new int;
int count;
if (!PyArg_ParseTuple(args, "ssiiO", &trackbar_name, &window_name, value, &count, &on_change))
return NULL;
if (!PyCallable_Check(on_change)) {
PyErr_SetString(PyExc_TypeError, "on_change must be callable");
return NULL;
}
ERRWRAP(cvCreateTrackbar2(trackbar_name, window_name, value, count, OnChange, Py_BuildValue("OO", on_change, Py_None)));
Py_RETURN_NONE;
}
static PyObject *pycvFindContours(PyObject *self, PyObject *args, PyObject *kw) static PyObject *pycvFindContours(PyObject *self, PyObject *args, PyObject *kw)
{ {
CvArr* image; CvArr* image;
@ -3964,17 +3871,12 @@ static double cppKMeans(const CvArr* _samples, int cluster_count, CvArr* _labels
#include "generated0.i" #include "generated0.i"
static PyMethodDef methods[] = { static PyMethodDef old_methods[] = {
#if PYTHON_USE_NUMPY #if PYTHON_USE_NUMPY
{"fromarray", (PyCFunction)pycvfromarray, METH_KEYWORDS, "fromarray(array) -> cvmatnd"}, {"fromarray", (PyCFunction)pycvfromarray, METH_KEYWORDS, "fromarray(array) -> cvmatnd"},
#endif #endif
//{"CalcOpticalFlowFarneback", (PyCFunction)pycvCalcOpticalFlowFarneback, METH_KEYWORDS, "CalcOpticalFlowFarneback(prev, next, flow, pyr_scale=0.5, levels=3, win_size=15, iterations=3, poly_n=7, poly_sigma=1.5, flags=0) -> None"},
//{"_HOGComputeDescriptors", (PyCFunction)pycvHOGComputeDescriptors, METH_KEYWORDS, "_HOGComputeDescriptors(image, win_stride=block_stride, locations=None, padding=(0,0), win_size=(64,128), block_size=(16,16), block_stride=(8,8), cell_size=(8,8), nbins=9, gammaCorrection=true) -> list_of_descriptors"},
//{"_HOGDetect", (PyCFunction)pycvHOGDetect, METH_KEYWORDS, "_HOGDetect(image, svm_classifier, win_stride=block_stride, locations=None, padding=(0,0), win_size=(64,128), block_size=(16,16), block_stride=(8,8), cell_size=(8,8), nbins=9, gammaCorrection=true) -> list_of_points"},
//{"_HOGDetectMultiScale", (PyCFunction)pycvHOGDetectMultiScale, METH_KEYWORDS, "_HOGDetectMultiScale(image, svm_classifier, win_stride=block_stride, scale=1.05, group_threshold=2, padding=(0,0), win_size=(64,128), block_size=(16,16), block_stride=(8,8), cell_size=(8,8), nbins=9, gammaCorrection=true) -> list_of_points"},
{"FindDataMatrix", pyfinddatamatrix, METH_VARARGS}, {"FindDataMatrix", pyfinddatamatrix, METH_VARARGS},
{"temp_test", temp_test, METH_VARARGS}, {"temp_test", temp_test, METH_VARARGS},
@ -3986,33 +3888,13 @@ static PyMethodDef methods[] = {
/************************************************************************/ /************************************************************************/
/* Module init */ /* Module init */
static int to_ok(PyTypeObject *to) PyObject* init_cv()
{ {
to->tp_alloc = PyType_GenericAlloc;
to->tp_new = PyType_GenericNew;
to->tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
return (PyType_Ready(to) == 0);
}
#define MKTYPE(NAME) NAME##_specials(); if (!to_ok(&NAME##_Type)) return
using namespace cv;
extern "C"
#if defined WIN32 || defined _WIN32
__declspec(dllexport)
#endif
void initcv()
{
#if PYTHON_USE_NUMPY
import_array();
#endif
PyObject *m, *d; PyObject *m, *d;
cvSetErrMode(CV_ErrModeParent); cvSetErrMode(CV_ErrModeParent);
#define MKTYPE(NAME) NAME##_specials(); to_ok(&NAME##_Type)
MKTYPE(cvcontourtree); MKTYPE(cvcontourtree);
MKTYPE(cvfont); MKTYPE(cvfont);
MKTYPE(cvhistogram); MKTYPE(cvhistogram);
@ -4031,12 +3913,12 @@ void initcv()
#include "generated4.i" #include "generated4.i"
m = Py_InitModule(MODULESTR"", methods); #undef MKTYPE
m = Py_InitModule(OLD_MODULESTR, old_methods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
PyDict_SetItemString(d, "__version__", PyString_FromString("$Rev: 4557 $")); PyDict_SetItemString(d, "__version__", PyString_FromString("$Rev: 4557 $"));
opencv_error = PyErr_NewException((char*)MODULESTR".error", NULL, NULL);
PyDict_SetItemString(d, "error", opencv_error); PyDict_SetItemString(d, "error", opencv_error);
// Couple of warnings about strict aliasing here. Not clear how to fix. // Couple of warnings about strict aliasing here. Not clear how to fix.
@ -4127,7 +4009,13 @@ void initcv()
PUBLISH(GC_INIT_WITH_RECT); PUBLISH(GC_INIT_WITH_RECT);
PUBLISH(GC_INIT_WITH_MASK); PUBLISH(GC_INIT_WITH_MASK);
PUBLISH(GC_EVAL); PUBLISH(GC_EVAL);
#include "generated2.i" #include "generated2.i"
#undef PUBLISH
#undef PUBLISHU
#undef PUBLISH2
return m;
} }

@ -1,7 +1,7 @@
# Calculating and displaying 2D Hue-Saturation histogram of a color image # Calculating and displaying 2D Hue-Saturation histogram of a color image
import sys import sys
import cv import cv2.cv as cv
def hs_histogram(src): def hs_histogram(src):
# Convert to HSV # Convert to HSV

@ -5,7 +5,7 @@ import random
import numpy import numpy
import transformations import transformations
import cv import cv2.cv as cv
def clamp(a, x, b): def clamp(a, x, b):
return numpy.maximum(a, numpy.minimum(x, b)) return numpy.maximum(a, numpy.minimum(x, b))

@ -1,5 +1,5 @@
import sys import sys
import cv import cv2.cv as cv
def findstereocorrespondence(image_left, image_right): def findstereocorrespondence(image_left, image_right):
# image_left and image_right are the input 8-bit single-channel images # image_left and image_right are the input 8-bit single-channel images

@ -1,4 +1,4 @@
import cv import cv2.cv as cv
import unittest import unittest
class TestGoodFeaturesToTrack(unittest.TestCase): class TestGoodFeaturesToTrack(unittest.TestCase):

@ -1,4 +1,4 @@
import cv import cv2.cv as cv
import numpy as np import numpy as np
cv.NamedWindow('Leak') cv.NamedWindow('Leak')
while 1: while 1:

@ -1,4 +1,4 @@
import cv import cv2.cv as cv
import numpy as np import numpy as np
import time import time

@ -1,4 +1,4 @@
import cv import cv2.cv as cv
import math import math
import time import time

@ -1,4 +1,4 @@
import cv import cv2.cv as cv
import math import math
import time import time

@ -1,4 +1,4 @@
import cv import cv2.cv as cv
def precornerdetect(image): def precornerdetect(image):
# assume that the image is floating-point # assume that the image is floating-point

@ -12,7 +12,7 @@ import getopt
import operator import operator
import functools import functools
import cv import cv2.cv as cv
class OpenCVTests(unittest.TestCase): class OpenCVTests(unittest.TestCase):

@ -1,5 +1,5 @@
import urllib import urllib
import cv import cv2.cv as cv
import Image import Image
import unittest import unittest

@ -6,7 +6,7 @@ import sys
import array import array
import os import os
import cv import cv2.cv as cv
def find_sample(s): def find_sample(s):
for d in ["../samples/c/", "../doc/pics/"]: for d in ["../samples/c/", "../doc/pics/"]:

@ -1,3 +1,63 @@
#include "test_precomp.hpp" #include "test_precomp.hpp"
CV_TEST_MAIN("cv") //CV_TEST_MAIN("cv")
#if 1
using namespace cv;
int main(int, char**)
{
Mat prevImg = imread("/Users/vp/work/ocv/opencv_extra/testdata/cv/optflow/rock_1.bmp", 0);
Mat nextImg = imread("/Users/vp/work/ocv/opencv_extra/testdata/cv/optflow/rock_2.bmp", 0);
FileStorage fs("/Users/vp/work/ocv/opencv_extra/testdata/cv/optflow/lk_prev.dat", FileStorage::READ);
vector<Point2f> u, v;
Mat _u;
fs["points"] >> _u;
_u.reshape(2, 0).copyTo(u);
vector<uchar> status;
vector<float> err;
double tmin = 0;
for( int k = 0; k < 3; k++ )
{
double t = (double)getTickCount();
#if 1
calcOpticalFlowPyrLK(prevImg, nextImg, u, v, status, err, Size(11,11),
5, TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 30, 0.01), 100);
#else
{
CvMat _prevImg = prevImg;
CvMat _nextImg = nextImg;
v.resize(u.size());
status.resize(u.size());
err.resize(u.size());
cvCalcOpticalFlowPyrLK(&_prevImg, &_nextImg, 0, 0, (CvPoint2D32f*)&u[0], (CvPoint2D32f*)&v[0], (int)u.size(),
cvSize(21, 21), 4, (char*)&status[0],
&err[0], cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, 0.01), 0);
}
#endif
t = (double)getTickCount() - t;
tmin = k == 0 ? t : std::min(tmin, t);
}
printf("time = %gms\n", tmin*1000./getTickFrequency());
Mat color;
cvtColor(prevImg, color, CV_GRAY2BGR);
for( size_t i = 0; i < u.size(); i++ )
{
Point2f ui = u[i], vi = v[i];
if( cvIsNaN(v[i].x) || cvIsNaN(v[i].y) || !status[i] )
{
const float r = 2.f;
line(color, Point2f(u[i].x-r,u[i].y-r), Point2f(u[i].x+r,u[i].y+r), Scalar(0, 0, 255), 1);
line(color, Point2f(u[i].x-r,u[i].y+r), Point2f(u[i].x+r,u[i].y-r), Scalar(0, 0, 255), 1);
continue;
}
line(color, ui, vi, Scalar(0, 255, 0), 1);
}
imshow("flow", color);
waitKey();
return 0;
}
#endif

@ -1,4 +1,4 @@
import cv import cv2.cv as cv
import time import time
cv.NamedWindow("camera", 1) cv.NamedWindow("camera", 1)

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
import cv import cv2.cv as cv
def is_rect_nonzero(r): def is_rect_nonzero(r):
(_,_,w,h) = r (_,_,w,h) = r

@ -1,5 +1,5 @@
#!/usr/bin/python #!/usr/bin/python
import cv import cv2.cv as cv
import sys import sys
import urllib2 import urllib2

@ -3,7 +3,7 @@
print "OpenCV Python version of contours" print "OpenCV Python version of contours"
# import the necessary things for OpenCV # import the necessary things for OpenCV
import cv import cv2.cv as cv
# some default constants # some default constants
_SIZE = 500 _SIZE = 500

@ -3,7 +3,7 @@
print "OpenCV Python version of convexhull" print "OpenCV Python version of convexhull"
# import the necessary things for OpenCV # import the necessary things for OpenCV
import cv import cv2.cv as cv
# to generate random values # to generate random values
import random import random

@ -5,7 +5,7 @@ Find Squares in image by finding countours and filtering
#otherwise ok #otherwise ok
import math import math
import cv import cv2.cv as cv
def angle(pt1, pt2, pt0): def angle(pt1, pt2, pt0):
"calculate angle contained by 3 points(x, y)" "calculate angle contained by 3 points(x, y)"

@ -1,4 +1,4 @@
import cv import cv2.cv as cv
import urllib2 import urllib2
from sys import argv from sys import argv

@ -6,7 +6,7 @@ delaunay triangulation and voronoi tesselation
Original Author (C version): ? Original Author (C version): ?
Converted to Python by: Roman Stanchak Converted to Python by: Roman Stanchak
""" """
import cv import cv2.cv as cv
import random import random
def draw_subdiv_point( img, fp, color ): def draw_subdiv_point( img, fp, color ):

@ -1,5 +1,5 @@
#!/usr/bin/python #!/usr/bin/python
import cv import cv2.cv as cv
import sys import sys
import urllib2 import urllib2

@ -1,5 +1,5 @@
#!/usr/bin/python #!/usr/bin/python
import cv import cv2.cv as cv
import sys import sys
import urllib2 import urllib2

@ -1,6 +1,6 @@
#!/usr/bin/python #!/usr/bin/python
import sys import sys
import cv import cv2.cv as cv
import urllib2 import urllib2
wndname = "Distance transform" wndname = "Distance transform"

@ -1,4 +1,4 @@
import cv import cv2.cv as cv
import time import time
from pydmtx import DataMatrix from pydmtx import DataMatrix
import numpy import numpy

@ -4,7 +4,7 @@ import colorsys
print "OpenCV Python version of drawing" print "OpenCV Python version of drawing"
import cv import cv2.cv as cv
def random_color(random): def random_color(random):
""" """

@ -4,7 +4,7 @@ print "OpenCV Python version of edge"
import sys import sys
import urllib2 import urllib2
import cv import cv2.cv as cv
# some definitions # some definitions
win_name = "Edge" win_name = "Edge"

@ -7,7 +7,7 @@ Original C implementation by: ?
Python implementation by: Roman Stanchak, James Bowman Python implementation by: Roman Stanchak, James Bowman
""" """
import sys import sys
import cv import cv2.cv as cv
from optparse import OptionParser from optparse import OptionParser
# Parameters for haar detection # Parameters for haar detection

@ -2,7 +2,7 @@
import sys import sys
import random import random
import urllib2 import urllib2
import cv import cv2.cv as cv
im=None; im=None;
mask=None; mask=None;

@ -13,7 +13,7 @@ Python implementation by: Roman Stanchak, James Bowman
import sys import sys
import urllib2 import urllib2
import random import random
import cv import cv2.cv as cv
def contour_iterator(contour): def contour_iterator(contour):
while contour: while contour:

@ -3,7 +3,7 @@
import sys import sys
from math import sin, cos, sqrt, pi from math import sin, cos, sqrt, pi
import cv import cv2.cv as cv
import urllib2 import urllib2
# toggle between CV_HOUGH_STANDARD and CV_HOUGH_PROBILISTIC # toggle between CV_HOUGH_STANDARD and CV_HOUGH_PROBILISTIC

@ -1,7 +1,7 @@
#!/usr/bin/python #!/usr/bin/python
import urllib2 import urllib2
import sys import sys
import cv import cv2.cv as cv
class Sketcher: class Sketcher:
def __init__(self, windowname, dests): def __init__(self, windowname, dests):

@ -12,7 +12,7 @@
Pressing ESC will stop the program. Pressing ESC will stop the program.
""" """
import urllib2 import urllib2
import cv import cv2.cv as cv
from math import cos, sin, sqrt from math import cos, sin, sqrt
import sys import sys

@ -1,6 +1,6 @@
#!/usr/bin/python #!/usr/bin/python
import urllib2 import urllib2
import cv import cv2.cv as cv
from random import randint from random import randint
MAX_CLUSTERS = 5 MAX_CLUSTERS = 5

@ -1,6 +1,6 @@
#!/usr/bin/python #!/usr/bin/python
import urllib2 import urllib2
import cv import cv2.cv as cv
import sys import sys
if __name__ == "__main__": if __name__ == "__main__":

@ -5,7 +5,7 @@ print "OpenCV Python version of lkdemo"
import sys import sys
# import the necessary things for OpenCV # import the necessary things for OpenCV
import cv import cv2.cv as cv
############################################################################# #############################################################################
# some "constants" # some "constants"

@ -1,7 +1,7 @@
#!/usr/bin/python #!/usr/bin/python
import sys import sys
import urllib2 import urllib2
import cv import cv2.cv as cv
src=None src=None
dst=None dst=None

@ -1,7 +1,7 @@
#!/usr/bin/python #!/usr/bin/python
import urllib2 import urllib2
import cv import cv2.cv as cv
from random import randint from random import randint
def roundxy(pt): def roundxy(pt):

@ -1,6 +1,6 @@
#! /usr/bin/env python #! /usr/bin/env python
import cv import cv2.cv as cv
cap = cv.CreateFileCapture("../c/tree.avi") cap = cv.CreateFileCapture("../c/tree.avi")
img = cv.QueryFrame(cap) img = cv.QueryFrame(cap)

@ -1,7 +1,7 @@
#!/usr/bin/python #!/usr/bin/python
import sys import sys
import urllib2 import urllib2
import cv import cv2.cv as cv
src = 0 src = 0
image = 0 image = 0

@ -3,7 +3,7 @@ import urllib2
import sys import sys
import time import time
from math import cos, sin from math import cos, sin
import cv import cv2.cv as cv
CLOCKS_PER_SEC = 1.0 CLOCKS_PER_SEC = 1.0
MHI_DURATION = 1 MHI_DURATION = 1

@ -1,7 +1,7 @@
#!/usr/bin/python #!/usr/bin/python
import urllib2 import urllib2
import sys import sys
import cv import cv2.cv as cv
import numpy import numpy
# SRGB-linear conversions using NumPy - see http://en.wikipedia.org/wiki/SRGB # SRGB-linear conversions using NumPy - see http://en.wikipedia.org/wiki/SRGB

@ -1,7 +1,7 @@
#!/usr/bin/python #!/usr/bin/python
import urllib2 import urllib2
import sys import sys
import cv import cv2.cv as cv
import numpy import numpy
if __name__ == "__main__": if __name__ == "__main__":

@ -1,5 +1,5 @@
#!/usr/bin/python #!/usr/bin/python
import cv import cv2.cv as cv
class PyrSegmentation: class PyrSegmentation:
def __init__(self, img0): def __init__(self, img0):

@ -7,7 +7,7 @@
import urllib2 import urllib2
from math import sqrt from math import sqrt
import cv import cv2.cv as cv
thresh = 50 thresh = 50
img = None img = None

@ -1,7 +1,7 @@
#!/usr/bin/python #!/usr/bin/python
import urllib2 import urllib2
import sys import sys
import cv import cv2.cv as cv
class Sketcher: class Sketcher:
def __init__(self, windowname, dests): def __init__(self, windowname, dests):

Loading…
Cancel
Save