提交 569b1ad5 编写于 作者: V Vadim Pisarevsky

embeded cv Python module into cv2.

上级 9b464199
......@@ -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()
......
......@@ -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()
......
......@@ -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))
......
......@@ -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
......
......@@ -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"
}
#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;
}
# 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
......
......@@ -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))
......
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
......
import cv
import cv2.cv as cv
import unittest
class TestGoodFeaturesToTrack(unittest.TestCase):
......
import cv
import cv2.cv as cv
import numpy as np
cv.NamedWindow('Leak')
while 1:
......
import cv
import cv2.cv as cv
import numpy as np
import time
......
import cv
import cv2.cv as cv
import math
import time
......
import cv
import cv2.cv as cv
import math
import time
......
import cv
import cv2.cv as cv
def precornerdetect(image):
# assume that the image is floating-point
......
......@@ -12,7 +12,7 @@ import getopt
import operator
import functools
import cv
import cv2.cv as cv
class OpenCVTests(unittest.TestCase):
......
import urllib
import cv
import cv2.cv as cv
import Image
import unittest
......
......@@ -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/"]:
......
#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
import cv
import cv2.cv as cv
import time
cv.NamedWindow("camera", 1)
......
#!/usr/bin/env python
import cv
import cv2.cv as cv
def is_rect_nonzero(r):
(_,_,w,h) = r
......
#!/usr/bin/python
import cv
import cv2.cv as cv
import sys
import urllib2
......
......@@ -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
......
......@@ -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
......
......@@ -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)"
......
import cv
import cv2.cv as cv
import urllib2
from sys import argv
......
......@@ -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 ):
......
#!/usr/bin/python
import cv
import cv2.cv as cv
import sys
import urllib2
......
#!/usr/bin/python
import cv
import cv2.cv as cv
import sys
import urllib2
......
#!/usr/bin/python
import sys
import cv
import cv2.cv as cv
import urllib2
wndname = "Distance transform"
......
import cv
import cv2.cv as cv
import time
from pydmtx import DataMatrix
import numpy
......
......@@ -4,7 +4,7 @@ import colorsys
print "OpenCV Python version of drawing"
import cv
import cv2.cv as cv
def random_color(random):
"""
......
......@@ -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"
......
......@@ -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
......
......@@ -2,7 +2,7 @@
import sys
import random
import urllib2
import cv
import cv2.cv as cv
im=None;
mask=None;
......
......@@ -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:
......
......@@ -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
......
#!/usr/bin/python
import urllib2
import sys
import cv
import cv2.cv as cv
class Sketcher:
def __init__(self, windowname, dests):
......
......@@ -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
......
#!/usr/bin/python
import urllib2
import cv
import cv2.cv as cv
from random import randint
MAX_CLUSTERS = 5
......
#!/usr/bin/python
import urllib2
import cv
import cv2.cv as cv
import sys
if __name__ == "__main__":
......
......@@ -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"
......
#!/usr/bin/python
import sys
import urllib2
import cv
import cv2.cv as cv
src=None
dst=None
......
#!/usr/bin/python
import urllib2
import cv
import cv2.cv as cv
from random import randint
def roundxy(pt):
......
#! /usr/bin/env python
import cv
import cv2.cv as cv
cap = cv.CreateFileCapture("../c/tree.avi")
img = cv.QueryFrame(cap)
......
#!/usr/bin/python
import sys
import urllib2
import cv
import cv2.cv as cv
src = 0
image = 0
......
......@@ -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
......
#!/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
......
#!/usr/bin/python
import urllib2
import sys
import cv
import cv2.cv as cv
import numpy
if __name__ == "__main__":
......
#!/usr/bin/python
import cv
import cv2.cv as cv
class PyrSegmentation:
def __init__(self, img0):
......
......@@ -7,7 +7,7 @@
import urllib2
from math import sqrt
import cv
import cv2.cv as cv
thresh = 50
img = None
......
#!/usr/bin/python
import urllib2
import sys
import cv
import cv2.cv as cv
class Sketcher:
def __init__(self, windowname, dests):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册