Il y a
opencv(la bibliothèque des gars d'OpenCV),cv(l'ancienne bibliothèque des gars d'OpenCV) etpyopencvavec son prédécesseurctypes-opencv.
Quelles sont les principales différences et laquelle dois-je utiliser?
Réponses:
Officiellement, OpenCV publie deux types d'interfaces Python, cvet cv2.
CV:
J'ai commencé à travailler dessus cv. En cela, tous les types de données OpenCV sont conservés en tant que tels. Par exemple, une fois chargées, les images sont de format cvMatidentique à celui du C ++.
Pour les opérations de tableau, il y a plusieurs fonctions comme cvSet2D, cvGet2D, etc. Et des discussions disent, ils sont plus lents.
Pour imageROI, vous avez besoin de fonctions spéciales telles que cvSetImageROI.
Si vous trouvez des contours, des cvSeqstructures sont renvoyées, ce qui n'est pas si agréable à travailler que les listes Python ou les tableaux NumPy.
(Et je pense que bientôt son développement sera arrêté. Auparavant, il n'y en avait que cv. Plus tard, OpenCV est venu avec les deux cvet cv2. Maintenant, dans les dernières versions, il n'y a que le cv2module, et il cvy a une sous-classe à l'intérieur cv2. Vous devez appeler import cv2.cv as cvpour y accéder.)
cv2:
Et le dernier est cv2. En cela, tout est retourné comme des NumPyobjets tels que ndarray et des native Pythonobjets comme lists, tuples, dictionary, etc. Donc , en raison de ce soutien NumPy, vous pouvez le faire toute opération numpy ici. NumPyest une bibliothèque de traitement de tableaux extrêmement stable et rapide.
Par exemple, si vous chargez une image, un ndarrayest renvoyé.
array[i,j] vous donne la valeur du 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, faites simplement res = img1+img2. (Mais l'ajout de 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 pour 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: Mise en route .
Bref, avec cv2, tout est simplifié et assez rapide.
Une discussion simple sur l'accélération de NumPy cv2dans la question Stack Overflow Comparaison des performances des interfaces OpenCV-Python, cv et cv2 .
pyopencv :
Je ne sais pas grand-chose à ce sujet puisque je ne l'ai pas utilisé. Mais il semble avoir arrêté le développement ultérieur.
Je pense qu'il vaudrait mieux s'en tenir aux bibliothèques officielles.
Bref, je vous recommande d'utiliser cv2!
EDIT: Vous pouvez voir la procédure d'installation du cv2module dans Installer OpenCV dans Windows pour Python .