Ci sono
opencv(la libreria dei ragazzi di OpenCV),cv(la vecchia libreria dei ragazzi di OpenCV) epyopencvcon il suo predecessorectypes-opencv.
Quali sono le principali differenze e quale dovrei usare?
Risposte:
Ufficialmente, OpenCV rilascia due tipi di interfacce Python cve 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, cvSeqvengono 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 cve cv2. Ora, nelle ultime versioni, c'è solo il cv2modulo, ed cvè una sottoclasse all'interno cv2. Devi chiamare import cv2.cv as cvper accedervi.)
cv2:
E l'ultima è cv2. In questo, tutto ciò che viene restituito come NumPyoggetti come ndarray e native Pythonoggetti 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, ndarrayviene 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 cv2modulo in Installa OpenCV in Windows per Python .