Question Quelle est la différence entre toutes ces interfaces OpenCV Python?


Il y a

Quelles sont les principales différences et lesquelles dois-je utiliser?


71
2018-05-02 15:42


origine


Réponses:


Officiellement, OpenCV publie deux types d’interfaces Python, cv et cv2.

CV:

J'ai commencé à travailler sur cv. En cela, tous les types de données OpenCV sont conservés en tant que tels. Par exemple, lorsqu'elles sont chargées, les images sont de format cvMat, comme en C ++.

Pour les opérations sur les tableaux, il y a plusieurs fonctions comme cvSet2D, cvGet2D, etc. Et certaines discussions disent, ils sont plus lents.

Pour imageROI, vous avez besoin de fonctions spéciales telles que cvSetImageROI.

Si vous trouvez des contours, cvSeq les structures sont retournées, ce qui n'est pas si bon de travailler avec les listes Python ou les tableaux NumPy.

(Et je pense que bientôt son développement sera arrêté. Plus tôt, il n'y avait que cv. Plus tard, OpenCV est venu avec les deux cv et cv2. Maintenant, il y a dans les dernières versions, il n'y a que le cv2 module, et cv est une sous classe à l'intérieur cv2. Vous devez appeler import cv2.cv as cv pour y accéder.)

cv2:

Et le dernier est cv2. En cela, tout est retourné comme NumPy des objets comme ndarray  et native Python des objets comme lists,tuples,dictionary, etc. Donc, grâce à ce support NumPy, vous pouvez effectuer n'importe quelle opération ici. NumPy est une bibliothèque de traitement de tableaux très stable et rapide.

Par exemple, si vous chargez une image, un ndarray est retourné

array[i,j] vous donne la valeur de pixel à la position (i, j).

En outre, pour imageROI, le découpage de tableau peut être utilisé comme ROI=array[c1:c2,r1:r2]. Pas besoin de fonctions séparées.

Pour ajouter deux images, il n'est pas nécessaire d'appeler une fonction, il suffit de faire res = img1+img2. (Mais l'addition NumPy est une opération modulo pour les tableaux uint8 comme les images. Voir l'article Différence entre l'arithmétique matricielle dans OpenCV et Numpy en savoir plus.

Les contours renvoyés sont des listes de tableaux Numpy. Vous pouvez trouver une discussion détaillée sur les contours dans Contours - 1: Premiers pas.

En résumé, avec cv2 tout est simplifié et assez rapide.

Une simple discussion sur l'accélération de NumPy cv2 est en question de débordement de pile Comparaison des performances des interfaces OpenCV-Python, cv et cv2.

pyopencv:

Je ne sais pas grand chose à ce sujet car je ne l'ai pas utilisé. Mais il semble avoir cessé de se développer.

Je pense qu'il vaudrait mieux s'en tenir aux bibliothèques officielles.

En bref, je vous recommande d'utiliser cv2!

EDIT: Vous pouvez voir la procédure d'installation pour le cv2 module en Installez OpenCV dans Windows pour Python.


118
2018-05-03 05:16