2012-05-02 22 views

Respuesta

116

Oficialmente, OpenCV libera dos tipos de interfaces de Python, y cvcv2.

cv:

que comenzó a trabajar en cv. En esto, todos los tipos de datos OpenCV se conservan como tales. Por ejemplo, cuando se cargan, las imágenes tienen el formato cvMat, lo mismo que en C++.

Para operaciones de matriz, hay varias funciones como cvSet2D, cvGet2D, etc. Y algunas discusiones dicen que son más lentas.

Para imageROI, necesita funciones especiales como cvSetImageROI.

Si encuentra contornos, se devuelven cvSeq estructuras que no son tan buenas para trabajar con las listas de Python o las matrices NumPy.

(Y creo que, en breve su desarrollo se detuvo. Anteriormente, sólo cv era. Más tarde, OpenCV vino con tanto cv y cv2. Ahora, allí en las últimas versiones, sólo existe el módulo de cv2, y cv es una subclase dentro cv2 es necesario llamar import cv2.cv as cv para acceder a ella)

cv2:..

Y la última es cv2. En esto, todo se devuelve como NumPy objetos como ndarray y native Python objetos como lists, tuples, dictionary, etc Por lo tanto, debido a este apoyo NumPy, se puede hacer cualquier operación numpy aquí. NumPy es una biblioteca de procesamiento de matrices altamente estable y rápida.

Por ejemplo, si se carga una imagen, se devuelve un ndarray.

array[i,j] le da el valor de píxel en la posición (i, j).

También, para imageROI, matriz de corte se puede utilizar como ROI=array[c1:c2,r1:r2]. Sin necesidad de funciones separadas.

Para agregar dos imágenes, no hay una necesidad de llamar a cualquier función, acaba de hacer res = img1+img2. (Pero además NumPy es una operación de módulo para arrays uint8 como imágenes. Véase el artículo Difference between Matrix Arithmetic in OpenCV and Numpy saber más.

Los contornos devueltos son listas de matrices Numpy. Puede encontrar una discusión detallada sobre Contornos en Contours - 1 : Getting Started.

En resumen, con cv2 todo se simplifica y es bastante rápido.

Una simple discusión sobre cómo acelerar NumPy cv2 está en desbordamiento de pila pregunta Performance comparison of OpenCV-Python interfaces, cv and cv2.

pyopencv:

no sé mucho acerca de esto ya que no he usado. Pero parece haber detenido un mayor desarrollo.

Creo que sería mejor quedarse en las bibliotecas oficiales.

En resumen, ¡le recomendaría usar cv2!

EDIT: Se puede ver el procedimiento de instalación para el módulo cv2 en Install OpenCV in Windows for Python.

+0

¿Tiene un enlace a cv2? – Framester

+0

cv2 La interfaz de Python se compilará e instalará si está creando OpenCV desde las fuentes. Si está utilizando paquetes binarios para Linux u otro sistema operativo, debe consultar su documentación de OS/distribución. Consulte http://goo.gl/MUjXi para obtener ayuda. –

+1

@Framester: vea el procedimiento de instalación para cv2 en este enlace: http://opencvpython.blogspot.in/2012/05/install-opencv-in-windows-for-python.html –

Cuestiones relacionadas