Ci sono
opencv
(la libreria dei ragazzi di OpenCV),cv
(la vecchia libreria dei ragazzi di OpenCV) epyopencv
con il suo predecessorectypes-opencv
.
Quali sono le principali differenze e quale dovrei usare?
Risposte:
Ufficialmente, OpenCV rilascia due tipi di interfacce Python cv
e cv2
.
CV:
Ho iniziato a lavorare cv
. In questo, tutti i tipi di dati OpenCV vengono conservati come tali. Ad esempio, una volta caricate, le immagini sono di formato cvMat
, come in C ++.
Per le operazioni di array, ci sono diverse funzioni come cvSet2D
, cvGet2D
, ecc E alcune discussioni dicono, sono più lenti.
Per imageROI, hai bisogno di funzioni speciali come cvSetImageROI
.
Se trovi i contorni, cvSeq
vengono restituite strutture che non è così buono da lavorare rispetto agli elenchi Python o agli array NumPy.
(E penso che presto il suo sviluppo verrà interrotto. Prima c'era solo cv
. Successivamente, OpenCV è arrivato con entrambi cv
e cv2
. Ora, nelle ultime versioni, c'è solo il cv2
modulo, ed cv
è una sottoclasse all'interno cv2
. Devi chiamare import cv2.cv as cv
per accedervi.)
cv2:
E l'ultima è cv2
. In questo, tutto ciò che viene restituito come NumPy
oggetti come ndarray
e native Python
oggetti come lists
, tuples
, dictionary
, ecc Quindi a causa di questo supporto NumPy, si può fare qualsiasi operazione NumPy qui. NumPy
è una libreria di elaborazione degli array altamente stabile e veloce.
Ad esempio, se carichi un'immagine, ndarray
viene restituito un file.
array[i,j]
ti dà il valore del pixel nella posizione (i, j).
Inoltre, per imageROI, lo slicing dell'array può essere usato come ROI=array[c1:c2,r1:r2]
. Non c'è bisogno di funzioni separate.
Per aggiungere due immagini, non è necessario chiamare alcuna funzione, basta farlo res = img1+img2
. (Ma l'aggiunta di NumPy è un'operazione modulo per array uint8 come le immagini. Vedi l'articolo Differenza tra Matrix Arithmetic in OpenCV e Numpy per saperne di più.
I contorni restituiti sono elenchi di array Numpy. È possibile trovare una discussione dettagliata su Contours in Contours - 1: Guida introduttiva .
Insomma, con cv2 tutto è semplificato e abbastanza veloce.
Una semplice discussione su come NumPy accelera cv2
è nella domanda Stack Overflow Confronto delle prestazioni delle interfacce OpenCV-Python, cv e cv2 .
pyopencv :
Non ne so molto da quando non l'ho usato. Ma sembra aver fermato ulteriori sviluppi.
Penso che sarebbe meglio restare fedeli alle biblioteche ufficiali.
In breve, ti consiglierei di usare cv2!
EDIT: Puoi vedere la procedura di installazione per il cv2
modulo in Installa OpenCV in Windows per Python .