2012-05-02 7 views

risposta

116

Ufficialmente, OpenCV rilascia due tipi di interfacce Python, cv e cv2.

cv:

ho iniziato a lavorare su cv. In questo, tutti i tipi di dati OpenCV sono conservati come tali. Ad esempio, quando caricate, le immagini sono di formato cvMat, come in C++.

Per le operazioni su array, ci sono diverse funzioni come cvSet2D, cvGet2D, ecc. E alcune discussioni dicono che sono più lente.

Per imageROI, sono necessarie funzioni speciali come cvSetImageROI.

Se si trovano i contorni, vengono restituite le strutture cvSeq che non sono così buone da lavorare rispetto agli elenchi Python o agli array NumPy.

(E penso, presto verrà fermato il suo sviluppo. In precedenza, solo cv c'era. Più tardi, OpenCV è venuto con entrambi cv e cv2. Ora, ci nelle ultime uscite, c'è solo il modulo cv2 e cv è una sottoclasse all'interno cv2 è necessario chiamare import cv2.cv as cv per accedervi)

CV2:..

E l'ultima è cv2. In questo, tutto viene restituito come oggetti NumPy come ndarray e native Python come lists, tuples, dictionary, ecc. Quindi, grazie a questo supporto NumPy, puoi eseguire qualsiasi operazione numpy qui. NumPy è una libreria di elaborazione array estremamente stabile e veloce.

Ad esempio, se si carica un'immagine, viene restituito ndarray.

array[i,j] fornisce il valore del pixel in posizione (i, j).

Inoltre, per imageROI, l'array slicing può essere utilizzato come ROI=array[c1:c2,r1:r2]. Non c'è bisogno di funzioni separate.

Per aggiungere due immagini, non è necessario chiamare alcuna funzione, basta fare res = img1+img2. (Ma l'aggiunta di NumPy è un'operazione di modulo per matrici uint8 come le immagini.Vedere l'articolo Difference between Matrix Arithmetic in OpenCV and Numpy per saperne di più.

I contorni restituiti sono elenchi di array Numpy. È possibile trovare una discussione dettagliata su Contours in Contours - 1 : Getting Started.

In breve, con cv2 tutto è semplificato e abbastanza veloce.

Una semplice discussione su come NumPy accelerare cv2 è in Stack Overflow questione Performance comparison of OpenCV-Python interfaces, cv and cv2.

pyopencv:

non so molto su questo visto che non ho usato. Ma sembra aver smesso di ulteriore sviluppo.

Penso che sarebbe meglio attenersi alle biblioteche ufficiali.

In breve, ti consiglio di utilizzare cv2!

EDIT: Potete vedere procedura di installazione per il modulo cv2 in Install OpenCV in Windows for Python.

+0

Hai un collegamento a cv2? – Framester

+0

cv2 L'interfaccia Python verrà compilata e installata se stai costruendo OpenCV dai sorgenti. Se si utilizzano pacchetti binari per Linux o altri sistemi operativi, consultare il proprio OS/documentazione di distribuzione. Vedi http://goo.gl/MUjXi per aiuto. –

+1

@Framester: vedere la procedura di installazione per cv2 in questo collegamento: http://opencvpython.blogspot.in/2012/05/install-opencv-in-windows-for-python.html –

Problemi correlati