Czym się różnią te wszystkie interfejsy Pythona OpenCV?

Jakie są główne różnice i którego z nich powinienem użyć?

Author: Framester, 2012-05-02

1 answers

Oficjalnie, OpenCV wydaje dwa typy interfejsów Pythona, cv i cv2.

Cv:

Zacząłem pracować nad cv. W ten sposób wszystkie typy danych OpenCV są zachowywane jako takie. Na przykład, po załadowaniu obrazy mają format cvMat, taki sam jak w C++.

Dla operacji tablicowych istnieje kilka funkcji takich jak cvSet2D, cvGet2D, itd. A niektóre dyskusje mówią, że są wolniejsze.

Do imageROI potrzebne są specjalne funkcje, takie jak cvSetImageROI.

Jeśli znajdź kontury, zwracane są struktury cvSeq, które nie są tak dobre do pracy z listami Pythona lub tablicami NumPy.

(i myślę, że wkrótce jego rozwój zostanie zatrzymany. Wcześniej było tylko cv. Później OpenCV pojawił się zarówno z cv, jak i cv2. Teraz w najnowszych wydaniach jest tylko moduł cv2, A {[0] } jest podklasą wewnątrz cv2. Musisz zadzwonić import cv2.cv as cv, aby uzyskać do niego dostęp.)

Cv2:

A najnowszy to cv2. W tym wszystkim jest zwracane jako NumPy obiekty jak ndarray oraz native Python obiekty jak lists,tuples,dictionary, itd. Więc ze względu na to wsparcie NumPy, możesz wykonać dowolną operację numpy tutaj. NumPy jest wysoce stabilną i szybką biblioteką przetwarzania tablic.

Na przykład, jeśli załadujesz obraz, zwracany jest ndarray.

array[i,j] daje wartość piksela w pozycji (i, j).

Również, dla imageROI, wycinanie tablic może być używane jak ROI=array[c1:c2,r1:r2]. Nie ma potrzeby stosowania oddzielnych funkcji.

Aby dodać dwa zdjęcia, tam nie trzeba wywoływać żadnej funkcji, wystarczy wykonać res = img1+img2. (Ale dodawanie NumPy jest operacją modulo dla tablic uint8, takich jak obrazy. Zobacz artykuł różnica między arytmetyką macierzy w OpenCV i Numpy aby wiedzieć więcej.

Zwracane kontury są listami tablic Numpy. Szczegółową dyskusję na temat konturów można znaleźć w Contours-1 : Pierwsze kroki.

krótko mówiąc, z cv2 wszystko jest uproszczone i ładne szybko.

Prosta dyskusja o tym, jak NumPy przyspiesza cv2 w pytaniu o przepełnienie stosuporównanie wydajności interfejsów OpenCV-Python, cv i cv2.

Pyopencv:

Nie wiem zbyt wiele na ten temat, ponieważ nie używałem go. Ale wydaje się, że zatrzymał dalszy rozwój.

Myślę, że lepiej będzie trzymać się oficjalnych bibliotek.

krótko mówiąc, polecam korzystanie z cv2!

EDIT: możesz zobaczyć procedurę instalacji modułu cv2 w zainstaluj OpenCV w Windows dla Pythona.

 123
Author: Abid Rahman K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:13