Existen
opencv
(la biblioteca de los chicos de OpenCV),cv
(la antigua biblioteca de los chicos de OpenCV) ypyopencv
con su predecesorctypes-opencv
.
¿Cuáles son las principales diferencias y cuál debo usar?
Respuestas:
Oficialmente, OpenCV lanza dos tipos de interfaces Python cv
y cv2
.
CV:
Empecé a trabajar cv
. En esto, todos los tipos de datos de OpenCV se conservan como tales. Por ejemplo, cuando se cargan, las imágenes tienen el cvMat
mismo formato que en C ++.
Para las operaciones de la matriz, hay varias funciones como cvSet2D
, cvGet2D
, etc, y algunas discusiones dicen, son más lentos.
Para imageROI, necesita funciones especiales como cvSetImageROI
.
Si encuentra contornos, cvSeq
se devuelven estructuras con las que no es tan bueno trabajar en comparación con las listas de Python o las matrices NumPy.
(Y creo que pronto se detendrá su desarrollo. Anteriormente, solo había cv
. Más tarde, OpenCV vino con ambos cv
y cv2
. Ahora, en las últimas versiones, solo está el cv2
módulo, y cv
hay una subclase dentro cv2
. Necesitas llamar import cv2.cv as cv
para acceder a él.)
cv2:
Y el último 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 muy estable y rápida.
Por ejemplo, si carga una imagen, ndarray
se devuelve un.
array[i,j]
le da el valor de píxel en la posición (i, j).
Además, para imageROI, el corte de matriz se puede usar como ROI=array[c1:c2,r1:r2]
. Sin necesidad de funciones independientes.
Para agregar dos imágenes, no es necesario llamar a ninguna función, simplemente hágalo res = img1+img2
. (Pero la adición de NumPy es una operación de módulo para matrices uint8 como imágenes. Consulte el artículo Diferencia entre la aritmética de matrices en OpenCV y Numpy para obtener más información.
Los contornos devueltos son listas de matrices Numpy. Puede encontrar una discusión detallada sobre Contours en Contours - 1: Getting Started .
En resumen, con cv2 todo se simplifica y es bastante rápido.
Una discusión simple sobre cómo se acelera NumPy cv2
en la pregunta Stack Overflow Comparación de rendimiento de interfaces OpenCV-Python, cv y cv2 .
pyopencv :
No sé mucho sobre esto ya que no lo he usado. Pero parece haber detenido un mayor desarrollo.
Creo que sería mejor ceñirse a las bibliotecas oficiales.
En resumen, ¡le recomendaría utilizar cv2!
EDITAR: Puede ver el procedimiento de instalación del cv2
módulo en Instalar OpenCV en Windows para Python .