Existen
opencv(la biblioteca de los chicos de OpenCV),cv(la antigua biblioteca de los chicos de OpenCV) ypyopencvcon su predecesorctypes-opencv.
¿Cuáles son las principales diferencias y cuál debo usar?
Oficialmente, OpenCV lanza dos tipos de interfaces Python cvy 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 cvMatmismo 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, cvSeqse 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 cvy cv2. Ahora, en las últimas versiones, solo está el cv2módulo, y cvhay una subclase dentro cv2. Necesitas llamar import cv2.cv as cvpara acceder a él.)
cv2:
Y el último es cv2. En esto, todo se devuelve como NumPyobjetos como ndarray y native Pythonobjetos como lists, tuples, dictionary, etc Por lo tanto, debido a este apoyo NumPy, se puede hacer cualquier operación numpy aquí. NumPyes una biblioteca de procesamiento de matrices muy estable y rápida.
Por ejemplo, si carga una imagen, ndarrayse 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 cv2en 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 cv2módulo en Instalar OpenCV en Windows para Python .
pip install opencv-python