embeded cv Python module into cv2.
authorVadim Pisarevsky <no@email>
Tue, 12 Jul 2011 12:56:03 +0000 (12:56 +0000)
committerVadim Pisarevsky <no@email>
Tue, 12 Jul 2011 12:56:03 +0000 (12:56 +0000)
55 files changed:
CMakeLists.txt
modules/CMakeLists.txt
modules/core/doc/old_basic_structures.rst
modules/python/CMakeLists.txt
modules/python/src2/api [moved from modules/python/src1/api with 100% similarity]
modules/python/src2/cv2.cpp
modules/python/src2/cv2.cv.hpp [moved from modules/python/src1/cv.cpp with 95% similarity]
modules/python/src2/defs [moved from modules/python/src1/defs with 100% similarity]
modules/python/src2/gen.py [moved from modules/python/src1/gen.py with 100% similarity]
modules/python/test/calchist.py
modules/python/test/camera_calibration.py
modules/python/test/findstereocorrespondence.py
modules/python/test/goodfeatures.py
modules/python/test/leak1.py
modules/python/test/leak2.py
modules/python/test/leak3.py
modules/python/test/leak4.py
modules/python/test/precornerdetect.py
modules/python/test/test.py
modules/python/test/ticket_6.py
modules/python/test/tickets.py
modules/video/test/test_main.cpp
samples/python/camera.py
samples/python/camshift.py
samples/python/chessboard.py
samples/python/contours.py
samples/python/convexhull.py
samples/python/cv20squares.py
samples/python/cvutils.py
samples/python/delaunay.py
samples/python/demhist.py
samples/python/dft.py
samples/python/distrans.py
samples/python/dmtx.py
samples/python/drawing.py
samples/python/edge.py
samples/python/facedetect.py
samples/python/ffilldemo.py
samples/python/fitellipse.py
samples/python/houghlines.py
samples/python/inpaint.py
samples/python/kalman.py
samples/python/kmeans.py
samples/python/laplace.py
samples/python/lkdemo.py
samples/python/logpolar.py
samples/python/minarea.py
samples/python/minidemo.py
samples/python/morphology.py
samples/python/motempl.py
samples/python/numpy_array.py
samples/python/numpy_warhol.py
samples/python/pyramid_segmentation.py
samples/python/squares.py
samples/python/watershed.py

index 9023fa1..59a3e31 100644 (file)
@@ -1611,7 +1611,7 @@ status("")
 status("  Interfaces:")
 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 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)
     status("    Java:" "NO (Java API requires Android API level 8 or higher)")
 else()
index deef051..17d71f1 100644 (file)
@@ -24,7 +24,7 @@ add_subdirectory(contrib)
 add_subdirectory(ml)
 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)
 endif()
 
index 4e0c189..b7483a8 100644 (file)
@@ -1729,7 +1729,7 @@ For example, `NumPy <http://numpy.scipy.org/>`_ arrays support the array interfa
 
 .. code-block::python
     
-    >>> import cv, numpy
+    >>> import cv2.cv as cv, numpy
     >>> a = numpy.ones((480, 640))
     >>> mat = cv.fromarray(a)
     >>> print cv.GetDims(mat), cv.CV_MAT_CN(cv.GetElemType(mat))
index ce21d22..0b64b1c 100644 (file)
@@ -5,7 +5,6 @@ project(opencv_python)
 
 include_directories(${PYTHON_INCLUDE_PATH})
 include_directories(
-    "${CMAKE_CURRENT_SOURCE_DIR}/src1"
     "${CMAKE_CURRENT_SOURCE_DIR}/src2"
     "${OpenCV_SOURCE_DIR}/modules/core/include"
     "${OpenCV_SOURCE_DIR}/modules/imgproc/include"
@@ -37,37 +36,6 @@ if(MSVC)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
 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
     "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_funcs.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_const_reg.h")
 
+
 add_custom_command(
-      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})
+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated0.i
+   COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/src2/gen.py" "${CMAKE_CURRENT_SOURCE_DIR}/src2"
+   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/api
+   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/defs
+   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/gen.py
+   )
 
-set(cv2_target "opencv2_python")
-add_library(${cv2_target} SHARED src2/cv2.cpp src2/opencv_extra_api.hpp ${cv2_generated_hdrs})
+add_custom_command(
+     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)
-
+    
 set_target_properties(${cv2_target} PROPERTIES PREFIX "")
 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})
 
 if (MSVC AND NOT BUILD_SHARED_LIBS)
     set_target_properties(${cv2_target} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /DEBUG")
 endif()
 
-set(cvpymodules ${cvpymodules} ${cv2_target})
-
-endif()
+set(cvpymodules ${cv2_target})
 
 if(WIN32)
   install(TARGETS ${cvpymodules}
@@ -105,7 +86,6 @@ if(WIN32)
           ARCHIVE DESTINATION "Python${PYTHON_VERSION_MAJOR_MINOR}/Lib/site-packages" COMPONENT main
           )
 else()
-  #install(FILES ${LIBRARY_OUTPUT_PATH}/cv${CVPY_SUFFIX} DESTINATION ${PYTHON_PACKAGES_PATH})
   install(TARGETS ${cvpymodules} 
           RUNTIME DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT main
           LIBRARY DESTINATION ${PYTHON_PACKAGES_PATH} COMPONENT main
index 39469ff..b0b2636 100644 (file)
@@ -833,6 +833,8 @@ static int to_ok(PyTypeObject *to)
   return (PyType_Ready(to) == 0);
 }
 
+#include "cv2.cv.hpp"
+
 extern "C"
 #if defined WIN32 || defined _WIN32
 __declspec(dllexport)
@@ -848,16 +850,17 @@ void initcv2()
 #include "pyopencv_generated_type_reg.h"
 #endif
 
-  PyObject* m = Py_InitModule(MODULESTR"", methods);
+  PyObject* m = Py_InitModule(MODULESTR, methods);
   PyObject* d = PyModule_GetDict(m);
 
   PyDict_SetItemString(d, "__version__", PyString_FromString("$Rev: 4557 $"));
 
   opencv_error = PyErr_NewException((char*)MODULESTR".error", NULL, NULL);
   PyDict_SetItemString(d, "error", opencv_error);
+  
+  PyObject* cv_m = init_cv();
 
-  // AFAIK the only floating-point constant
-  PyDict_SetItemString(d, "CV_PI", PyFloat_FromDouble(CV_PI));
+  PyDict_SetItemString(d, "cv", cv_m);  
 
 #define PUBLISH(I) PyDict_SetItemString(d, #I, PyInt_FromLong(I))
 #define PUBLISHU(I) PyDict_SetItemString(d, #I, PyLong_FromUnsignedLong(I))
@@ -942,7 +945,6 @@ void initcv2()
 
   PUBLISH(CV_AA);
 
-
 #include "pyopencv_generated_const_reg.h"
 }
 
similarity index 95%
rename from modules/python/src1/cv.cpp
rename to modules/python/src2/cv2.cv.hpp
index e828773..fd3f91e 100644 (file)
@@ -1,16 +1,7 @@
-#include <Python.h>
+#include "opencv2/legacy/legacy.hpp"
+#include "opencv2/legacy/compat.hpp"
 
-#include <assert.h>
-
-#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;
+#define OLD_MODULESTR "cv2.cv"
 
 struct memtrack_t {
   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 */
 
 static PyObject *PyObject_FromCvScalar(CvScalar s, int type)
@@ -355,7 +331,7 @@ static PyMappingMethods iplimage_as_map = {
 static PyTypeObject iplimage_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".iplimage",                          /*name*/
+  OLD_MODULESTR".iplimage",                          /*name*/
   sizeof(iplimage_t),                        /*basicsize*/
 };
 
@@ -665,7 +641,7 @@ static PyMappingMethods cvmat_as_map = {
 static PyTypeObject cvmat_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvmat",                      /*name*/
+  OLD_MODULESTR".cvmat",                      /*name*/
   sizeof(cvmat_t),                        /*basicsize*/
 };
 
@@ -830,7 +806,7 @@ static PyMappingMethods cvmatnd_as_map = {
 static PyTypeObject cvmatnd_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvmatnd",                          /*name*/
+  OLD_MODULESTR".cvmatnd",                          /*name*/
   sizeof(cvmatnd_t),                        /*basicsize*/
 };
 
@@ -862,7 +838,7 @@ static void cvhistogram_dealloc(PyObject *self)
 static PyTypeObject cvhistogram_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvhistogram",                /*name*/
+  OLD_MODULESTR".cvhistogram",                /*name*/
   sizeof(cvhistogram_t),                  /*basicsize*/
 };
 
@@ -915,7 +891,7 @@ static PyObject *cvlineiterator_next(PyObject *o)
 static PyTypeObject cvlineiterator_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvlineiterator",             /*name*/
+  OLD_MODULESTR".cvlineiterator",             /*name*/
   sizeof(cvlineiterator_t),               /*basicsize*/
 };
 
@@ -958,7 +934,7 @@ static void memtrack_dealloc(PyObject *self)
 static PyTypeObject memtrack_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".memtrack",                          /*name*/
+  OLD_MODULESTR".memtrack",                          /*name*/
   sizeof(memtrack_t),                        /*basicsize*/
 };
 
@@ -1005,7 +981,7 @@ static void cvmemstorage_dealloc(PyObject *self)
 static PyTypeObject cvmemstorage_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvmemstorage",               /*name*/
+  OLD_MODULESTR".cvmemstorage",               /*name*/
   sizeof(cvmemstorage_t),                 /*basicsize*/
 };
 
@@ -1021,7 +997,7 @@ static void cvmemstorage_specials(void)
 static PyTypeObject cvfont_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvfont",                     /*name*/
+  OLD_MODULESTR".cvfont",                     /*name*/
   sizeof(cvfont_t),                       /*basicsize*/
 };
 
@@ -1034,7 +1010,7 @@ static void cvfont_specials(void) { }
 static PyTypeObject cvrng_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvrng",                     /*name*/
+  OLD_MODULESTR".cvrng",                     /*name*/
   sizeof(cvrng_t),                       /*basicsize*/
 };
 
@@ -1049,7 +1025,7 @@ static void cvrng_specials(void)
 static PyTypeObject cvcontourtree_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvcontourtree",                     /*name*/
+  OLD_MODULESTR".cvcontourtree",                     /*name*/
   sizeof(cvcontourtree_t),                       /*basicsize*/
 };
 
@@ -1063,7 +1039,7 @@ static void cvcontourtree_specials(void) { }
 static PyTypeObject cvsubdiv2dedge_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvsubdiv2dedge",                     /*name*/
+  OLD_MODULESTR".cvsubdiv2dedge",                     /*name*/
   sizeof(cvsubdiv2dedge_t),                       /*basicsize*/
 };
 
@@ -1246,7 +1222,7 @@ static PyMappingMethods cvseq_mapping = {
 static PyTypeObject cvseq_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvseq",                          /*name*/
+  OLD_MODULESTR".cvseq",                          /*name*/
   sizeof(cvseq_t),                        /*basicsize*/
 };
 
@@ -1294,7 +1270,7 @@ static void cvset_dealloc(PyObject *self)
 static PyTypeObject cvset_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvset",                          /*name*/
+  OLD_MODULESTR".cvset",                          /*name*/
   sizeof(cvset_t),                        /*basicsize*/
 };
 
@@ -1334,7 +1310,7 @@ static void cvset_specials(void)
 static PyTypeObject cvsubdiv2d_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                          /*size*/
-  MODULESTR".cvsubdiv2d",                     /*name*/
+  OLD_MODULESTR".cvsubdiv2d",                     /*name*/
   sizeof(cvsubdiv2d_t),                       /*basicsize*/
 };
 
@@ -1365,7 +1341,7 @@ static void cvsubdiv2d_specials(void)
 static PyTypeObject cvsubdiv2dpoint_Type = {
   PyObject_HEAD_INIT(&PyType_Type)
   0,                                      /*size*/
-  MODULESTR".cvsubdiv2dpoint",                     /*name*/
+  OLD_MODULESTR".cvsubdiv2dpoint",                     /*name*/
   sizeof(cvsubdiv2dpoint_t),                       /*basicsize*/
 };
 
@@ -3367,75 +3343,6 @@ static PyObject *pycvReshapeMatND(PyObject *self, PyObject *args)
   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)
 {
   CvArr* image;
@@ -3964,17 +3871,12 @@ static double cppKMeans(const CvArr* _samples, int cluster_count, CvArr* _labels
 
 #include "generated0.i"
 
-static PyMethodDef methods[] = {
+static PyMethodDef old_methods[] = {
 
 #if PYTHON_USE_NUMPY
     {"fromarray", (PyCFunction)pycvfromarray, METH_KEYWORDS, "fromarray(array) -> cvmatnd"},
 #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},
   {"temp_test", temp_test, METH_VARARGS},
 
@@ -3986,33 +3888,13 @@ static PyMethodDef methods[] = {
 /************************************************************************/
 /* 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;
-
   cvSetErrMode(CV_ErrModeParent);
 
+  #define MKTYPE(NAME)  NAME##_specials(); to_ok(&NAME##_Type)
+
   MKTYPE(cvcontourtree);
   MKTYPE(cvfont);
   MKTYPE(cvhistogram);
@@ -4031,12 +3913,12 @@ void initcv()
 
 #include "generated4.i"
 
-  m = Py_InitModule(MODULESTR"", methods);
+  #undef MKTYPE
+
+  m = Py_InitModule(OLD_MODULESTR, old_methods);
   d = PyModule_GetDict(m);
 
   PyDict_SetItemString(d, "__version__", PyString_FromString("$Rev: 4557 $"));
-
-  opencv_error = PyErr_NewException((char*)MODULESTR".error", NULL, NULL);
   PyDict_SetItemString(d, "error", opencv_error);
 
   // 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_MASK);
   PUBLISH(GC_EVAL);
-
+  
 #include "generated2.i"
+
+#undef PUBLISH
+#undef PUBLISHU
+#undef PUBLISH2    
+    
+  return m;
 }
 
index f379dfe..0434f52 100644 (file)
@@ -1,7 +1,7 @@
 # Calculating and displaying 2D Hue-Saturation histogram of a color image
 
 import sys
-import cv
+import cv2.cv as cv
 
 def hs_histogram(src):
     # Convert to HSV
index 8952e3c..989207c 100644 (file)
@@ -5,7 +5,7 @@ import random
 
 import numpy
 import transformations
-import cv
+import cv2.cv as cv
 
 def clamp(a, x, b):
     return numpy.maximum(a, numpy.minimum(x, b))
index fd3e57f..9cc1941 100644 (file)
@@ -1,5 +1,5 @@
 import sys
-import cv
+import cv2.cv as cv
 
 def findstereocorrespondence(image_left, image_right):
     # image_left and image_right are the input 8-bit single-channel images
index d68bd1f..37f64ac 100644 (file)
@@ -1,4 +1,4 @@
-import cv
+import cv2.cv as cv
 import unittest
 
 class TestGoodFeaturesToTrack(unittest.TestCase):
index c451c0e..49326da 100644 (file)
@@ -1,4 +1,4 @@
-import cv
+import cv2.cv as cv
 import numpy as np
 cv.NamedWindow('Leak')
 while 1:
index a67352f..ca511a4 100644 (file)
@@ -1,4 +1,4 @@
-import cv
+import cv2.cv as cv
 import numpy as np
 import time
 
index c12364e..901d7be 100644 (file)
@@ -1,4 +1,4 @@
-import cv
+import cv2.cv as cv
 import math
 import time
 
index 3268200..8d8ba88 100644 (file)
@@ -1,4 +1,4 @@
-import cv
+import cv2.cv as cv
 import math
 import time
 
index 4f4da06..2d739c3 100644 (file)
@@ -1,4 +1,4 @@
-import cv
+import cv2.cv as cv
 
 def precornerdetect(image):
     # assume that the image is floating-point 
index 9271aa3..9b5ddaf 100644 (file)
@@ -12,7 +12,7 @@ import getopt
 import operator
 import functools
 
-import cv
+import cv2.cv as cv
 
 class OpenCVTests(unittest.TestCase):
 
index 5f3d015..7153431 100644 (file)
@@ -1,5 +1,5 @@
 import urllib
-import cv
+import cv2.cv as cv
 import Image
 import unittest
 
index a6f3339..aa68180 100644 (file)
@@ -6,7 +6,7 @@ import sys
 import array
 import os
 
-import cv
+import cv2.cv as cv
 
 def find_sample(s):
     for d in ["../samples/c/", "../doc/pics/"]:
index 6b24993..410814c 100644 (file)
@@ -1,3 +1,63 @@
 #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
+
index 7459534..9a57ac5 100644 (file)
@@ -1,4 +1,4 @@
-import cv
+import cv2.cv as cv
 import time
 
 cv.NamedWindow("camera", 1)
index a1e848b..2f28977 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python\r
 \r
-import cv\r
+import cv2.cv as cv\r
 \r
 def is_rect_nonzero(r):\r
     (_,_,w,h) = r\r
index b05c70b..31372b0 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/python
-import cv
+import cv2.cv as cv
 import sys
 import urllib2
 
index 9a69c54..4388b8e 100755 (executable)
@@ -3,7 +3,7 @@
 print "OpenCV Python version of contours"
 
 # import the necessary things for OpenCV
-import cv
+import cv2.cv as cv
 
 # some default constants
 _SIZE = 500
index e9affd7..8795d0b 100755 (executable)
@@ -3,7 +3,7 @@
 print "OpenCV Python version of convexhull"
 
 # import the necessary things for OpenCV
-import cv
+import cv2.cv as cv
 
 # to generate random values
 import random
index a7c560f..7bb0c7a 100644 (file)
@@ -5,7 +5,7 @@ Find Squares in image by finding countours and filtering
 #otherwise ok
 
 import math
-import cv
+import cv2.cv as cv
 
 def angle(pt1, pt2, pt0):
     "calculate angle contained by 3 points(x, y)"
index 21e9a7d..47785d1 100644 (file)
@@ -1,4 +1,4 @@
-import cv
+import cv2.cv as cv
 import urllib2
 from sys import argv
 
index 10af4fb..d9a4700 100755 (executable)
@@ -6,7 +6,7 @@ delaunay triangulation and voronoi tesselation
 Original Author (C version): ?
 Converted to Python by: Roman Stanchak
 """
-import cv
+import cv2.cv as cv
 import random
 
 def draw_subdiv_point( img, fp, color ):
index d1f720b..a6b1019 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/python
-import cv
+import cv2.cv as cv
 import sys
 import urllib2
 
index 147dc66..f4408ca 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/python
-import cv
+import cv2.cv as cv
 import sys
 import urllib2
 
index e5414e5..aee9357 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 import sys
-import cv
+import cv2.cv as cv
 import urllib2
 
 wndname = "Distance transform"
index f749681..847f850 100644 (file)
@@ -1,4 +1,4 @@
-import cv
+import cv2.cv as cv
 import time
 from pydmtx import DataMatrix
 import numpy
index 6b007da..584e599 100755 (executable)
@@ -4,7 +4,7 @@ import colorsys
 
 print "OpenCV Python version of drawing"
 
-import cv
+import cv2.cv as cv
 
 def random_color(random):
     """
index 33bfdb6..5730ecd 100755 (executable)
@@ -4,7 +4,7 @@ print "OpenCV Python version of edge"
 
 import sys
 import urllib2
-import cv
+import cv2.cv as cv
 
 # some definitions
 win_name = "Edge"
index 0c0c9bc..15f8302 100755 (executable)
@@ -7,7 +7,7 @@ Original C implementation by:  ?
 Python implementation by: Roman Stanchak, James Bowman
 """
 import sys
-import cv
+import cv2.cv as cv
 from optparse import OptionParser
 
 # Parameters for haar detection
index 4eb4c44..1a2be0e 100755 (executable)
@@ -2,7 +2,7 @@
 import sys
 import random
 import urllib2
-import cv
+import cv2.cv as cv
 
 im=None;
 mask=None;
index 398437d..725838a 100755 (executable)
@@ -13,7 +13,7 @@ Python implementation by: Roman Stanchak, James Bowman
 import sys
 import urllib2
 import random
-import cv
+import cv2.cv as cv
 
 def contour_iterator(contour):
     while contour:
index 8bffdcc..e86a70d 100755 (executable)
@@ -3,7 +3,7 @@
 
 import sys
 from math import sin, cos, sqrt, pi
-import cv
+import cv2.cv as cv
 import urllib2
 
 # toggle between CV_HOUGH_STANDARD and CV_HOUGH_PROBILISTIC
index 1e06b93..06444d9 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 import urllib2
 import sys
-import cv
+import cv2.cv as cv
 
 class Sketcher:
     def __init__(self, windowname, dests):
index af64e8e..36cd1ff 100755 (executable)
@@ -12,7 +12,7 @@
    Pressing ESC will stop the program.
 """
 import urllib2
-import cv
+import cv2.cv as cv
 from math import cos, sin, sqrt
 import sys
 
index 36428bb..ca5df6e 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 import urllib2
-import cv
+import cv2.cv as cv
 from random import randint
 MAX_CLUSTERS = 5
 
index c7d6f46..c1a3cfa 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 import urllib2
-import cv
+import cv2.cv as cv
 import sys
 
 if __name__ == "__main__":
index 2aa5843..2071023 100755 (executable)
@@ -5,7 +5,7 @@ print "OpenCV Python version of lkdemo"
 import sys
 
 # import the necessary things for OpenCV
-import cv
+import cv2.cv as cv
 
 #############################################################################
 # some "constants"
index 6afebaf..adbf7de 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 import sys
 import urllib2
-import cv
+import cv2.cv as cv
 
 src=None
 dst=None
index 8310fbc..d38a7ce 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/python 
 
 import urllib2
-import cv
+import cv2.cv as cv
 from random import randint
 
 def roundxy(pt):
index dcc2922..8c5924c 100755 (executable)
@@ -1,6 +1,6 @@
 #! /usr/bin/env python
 
-import cv
+import cv2.cv as cv
 
 cap = cv.CreateFileCapture("../c/tree.avi")
 img = cv.QueryFrame(cap)
index 2014675..efc525a 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 import sys
 import urllib2
-import cv
+import cv2.cv as cv
 
 src = 0
 image = 0
index 306c638..2b2426f 100755 (executable)
@@ -3,7 +3,7 @@ import urllib2
 import sys
 import time
 from math import cos, sin
-import cv
+import cv2.cv as cv
 
 CLOCKS_PER_SEC = 1.0
 MHI_DURATION = 1
index e0322f3..deb9281 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 import urllib2
 import sys
-import cv
+import cv2.cv as cv
 import numpy
 
 # SRGB-linear conversions using NumPy - see http://en.wikipedia.org/wiki/SRGB
index 7309997..97f32a9 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 import urllib2
 import sys
-import cv
+import cv2.cv as cv
 import numpy
 
 if __name__ == "__main__":
index fa9dbd0..80293e2 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/python
-import cv
+import cv2.cv as cv
 
 class PyrSegmentation:
     def __init__(self, img0):
index 6fe734d..ed8b8ae 100755 (executable)
@@ -7,7 +7,7 @@
 
 import urllib2
 from math import sqrt
-import cv
+import cv2.cv as cv
 
 thresh = 50
 img = None
index 4107528..d2983e7 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 import urllib2
 import sys
-import cv
+import cv2.cv as cv
 
 class Sketcher:
     def __init__(self, windowname, dests):