Czym się różnią te wszystkie interfejsy Pythona OpenCV?
Są
-
opencv
(biblioteka z OpenCV), -
cv
(stara biblioteka z OpenCV) i -
pyopencv
z poprzednikiemctypes-opencv
.
Jakie są główne różnice i którego z nich powinienem użyć?
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.
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