mac - opencv python install
¿Cuál es la diferencia entre todas estas interfaces de OpenCV Python? (1)
Existen
-
opencv
(la biblioteca de los chicos de OpenCV), -
cv
(la antigua biblioteca de los chicos de OpenCV) y -
pyopencv
con su predecesorctypes-opencv
.
¿Cuáles son las principales diferencias y cuál debo usar?
Oficialmente, OpenCV lanza dos tipos de interfaces de Python, cv
y cv2
.
CV:
Empecé 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
, igual que en C ++.
Para las 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 cvSeq
estructuras de cvSeq
que no son tan buenas para trabajar en comparación con las listas de Python o las matrices NumPy.
(Y creo que pronto se detendrá su desarrollo. Antes, solo había cv
. Más tarde, OpenCV cv2
tanto cv
como cv2
. Ahora, en las últimas versiones, solo está el módulo cv2
, y el cv
es una subclase en el interior cv2
. cv2
llamar a import cv2.cv as cv
para acceder a él.)
cv2:
Y el último es cv2
. En esto, todo se devuelve como objetos NumPy
como ndarray
y objetos native Python
como lists
, tuples
, dictionary
, etc. Por lo tanto, debido a este soporte de NumPy, puede realizar cualquier operación numpy aquí. NumPy
es una biblioteca de procesamiento de matrices altamente estable y rápida.
Por ejemplo, si carga una imagen, se devuelve un ndarray
.
array[i,j]
le da el valor de píxel en la posición (i, j).
Además, para imageROI, el corte en matriz se puede usar como ROI=array[c1:c2,r1:r2]
. Sin necesidad de funciones separadas.
Para agregar dos imágenes, no hay necesidad de llamar a ninguna función, simplemente haga 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 Matriz aritmética 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 Contornos en contornos - 1: Primeros pasos .
En resumen, con cv2 todo se simplifica y es bastante rápido.
Una simple discusión sobre cómo NumPy acelera cv2
está en question Comparación de rendimiento de las 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 seguir con las bibliotecas oficiales.
En resumen, ¡te recomendaría usar cv2!
EDITAR: Puede ver el procedimiento de instalación para el módulo cv2
en Install OpenCV en Windows para Python .