Commit 569b1ad5 authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

embeded cv Python module into cv2.

parent 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,6 +43,15 @@ 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 ${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
)
add_custom_command(
OUTPUT ${cv2_generated_hdrs}
COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/src2/gen2.py" ${CMAKE_CURRENT_BINARY_DIR} ${opencv_hdrs}
......@@ -82,21 +59,25 @@ add_custom_command(
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src2/hdr_parser.py
DEPENDS ${opencv_hdrs})
set(cv2_target "opencv2_python")
add_library(${cv2_target} SHARED src2/cv2.cpp src2/opencv_extra_api.hpp ${cv2_generated_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,7 +850,7 @@ 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 $"));
......@@ -856,8 +858,9 @@ void initcv2()
opencv_error = PyErr_NewException((char*)MODULESTR".error", NULL, NULL);
PyDict_SetItemString(d, "error", opencv_error);
// AFAIK the only floating-point constant
PyDict_SetItemString(d, "CV_PI", PyFloat_FromDouble(CV_PI));
PyObject* cv_m = init_cv();
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"
}
# 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% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment