Podsumowałem moje w pełni działające rozwiązanie, OpenCV-Python - Jak zainstalować pakiet OpenCV-Python w Anaconda (Windows) . Niemniej jednak skopiowałem i wkleiłem ważne fragmenty tego postu.
W chwili pisania tego tekstu korzystałem z systemu Windows 8.1, 64-bitowego komputera, Anaconda / Python 2.x. (patrz uwagi poniżej - działa to również w systemie Windows 10 i prawdopodobnie również w języku Python 3.x).
UWAGA 1: jak wspomniano w @great_raisin (dziękuję) w sekcji komentarzy, wydaje się jednak, że to rozwiązanie działa również w systemie Windows 10.
UWAGA 2: prawdopodobnie będzie to również działać dla Anaconda / Python 3.x. Jeśli korzystasz z systemu Windows 10 i Anaconda / Python 3.x, a to rozwiązanie działa, dodaj komentarz poniżej. Dzięki! (Aktualizacja: z uwagi na komentarz „Praca w systemie Windows 10”)
UWAGA 3: w zależności od tego, czy korzystasz z Pythona 2.x czy 3.x, po prostu odpowiednio dostosuj print
instrukcję we fragmentach kodu. tj. w Pythonie 3.x byłoby print("hello")
, aw Pythonie 2.x byłoby print "hello"
.
TL; DR
Aby w pełni korzystać z OpenCV z Anacondą (i Spyder IDE), musimy:
- Pobierz pakiet OpenCV z oficjalnej strony OpenCV
- Skopiuj i wklej
cv2.pyd
do katalogu Anaconda site-packages.
- Ustaw zmienne środowiskowe użytkownika, aby Anaconda wiedziała, gdzie znaleźć narzędzie FFMPEG.
- Przeprowadź testy, aby potwierdzić, że OpenCV i FFMPEG działają teraz.
(Przeczytaj szczegółowe instrukcje ...)
Warunek wstępny
Zainstaluj Anaconda
Anaconda to zasadniczo ładnie zapakowane IDE Pythona, które jest dostarczane z mnóstwem przydatnych pakietów, takich jak NumPy, Panda, Notebook IPython itp. Wydaje się, że jest zalecane wszędzie w środowisku naukowym. Sprawdź Anaconda, aby ją zainstalować.
Zainstaluj OpenCV-Python w Anaconda
Uwaga: pierwotnie próbowałem zainstalować pakiet OpenCV binstar.org, zgodnie z sugestią. Ta metoda nie obejmuje jednak kodeka FFMPEG - tzn. Możesz używać OpenCV, ale nie będziesz w stanie przetwarzać filmów.
Poniższa instrukcja jest dla mnie inspirowana tym filmem na YouTube OpenCV . Do tej pory działało zarówno na moim komputerze stacjonarnym, jak i laptopie, zarówno na komputerach 64-bitowych, jak i Windows 8.1.
Pobierz pakiet OpenCV
Najpierw przejdź do oficjalnej strony OpenCV, aby pobrać pełny pakiet OpenCV. Wybierz wersję, którą lubisz (2.x lub 3.x). Korzystam z języka Python 2.x i OpenCV 3.x - głównie dlatego, że w ten sposób konfiguruje się / opiera się samouczki OpenCV-Python .
W moim przypadku rozpakowałem pakiet (zasadniczo folder) prosto na mój dysk C ( C:\opencv
).
Skopiuj i wklej plik cv2.pyd
Katalog Anaconda Site-packages (np. C:\Users\Johnny\Anaconda\Lib\site-packages
W moim przypadku) zawiera pakiety Python, które możesz zaimportować. Naszym celem jest skopiowanie i wklejenie cv2.pyd
pliku do tego katalogu (abyśmy mogli użyć import cv2
w naszych kodach Python).
Aby to zrobić, skopiuj cv2.pyd
plik ...
Z tego katalogu OpenCV (część początkowa może się nieco różnić na twoim komputerze). W przypadku Pythona 3.x, po prostu zmień odpowiednio 2.x
na 3.x
.
# Python 2.7 and 32-bit machine:
C:\opencv\build\python\2.7\x84
# Python 2.7 and 64-bit machine:
C:\opencv\build\python\2.7\x64
Do tego katalogu Anaconda (część początkowa może się nieco różnić na twoim komputerze):
C:\Users\Johnny\Anaconda\Lib\site-packages
Po wykonaniu tego kroku będziemy mogli używać import cv2
kodu Python. ALE wciąż musimy wykonać trochę więcej pracy, aby FFMPEG (kodek wideo) działał (aby umożliwić nam takie czynności, jak przetwarzanie filmów).
Ustaw zmienne środowiskowe
Kliknij prawym przyciskiem myszy „Mój komputer” (lub „Ten komputer” w systemie Windows 8.1) → kliknij lewym przyciskiem myszy Właściwości → kliknij lewym przyciskiem myszy kartę „Zaawansowane” → kliknij lewym przyciskiem myszy przycisk „Zmienne środowiskowe ...”.
Dodaj nową zmienną użytkownika, aby wskazywała na OpenCV (x86 dla systemu 32-bitowego lub x64 dla systemu 64-bitowego). Obecnie jestem na komputerze 64-bitowym.
| 32-bit or 64 bit machine? | Variable | Value |
|---------------------------|--------------|--------------------------------------|
| 32-bit | `OPENCV_DIR` | `C:\opencv\build\x86\vc12` |
| 64-bit | `OPENCV_DIR` | `C:\opencv\build\x64\vc12` |
Dołącz %OPENCV_DIR%\bin
do zmiennej użytkownika PATH
.
Na przykład moja PATH
zmienna użytkownika wygląda następująco ...
Przed:
C:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts
Po:
C:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts;%OPENCV_DIR%\bin
To już koniec! FFMPEG jest gotowy do użycia!
Testuj, aby potwierdzić
Musimy sprawdzić, czy możemy teraz to zrobić w Anaconda (za pośrednictwem Spyder IDE):
- Zaimportuj pakiet OpenCV
- Użyj narzędzia FFMPEG (do odczytu / zapisu / przetwarzania filmów)
Test 1: Czy możemy zaimportować OpenCV?
Aby potwierdzić, że Anaconda jest teraz w stanie zaimportować pakiet OpenCV-Python (a mianowicie cv2
), wydaj je w konsoli IPython:
import cv2
print cv2.__version__
Jeśli paczka cv2
zostanie zaimportowana OK bez błędów, a cv2
wersja zostanie wydrukowana, wszyscy jesteśmy dobrzy! Oto migawka:
(źródło: mathalope.co.uk )
Test 2: Czy możemy użyć kodeka FFMPEG?
Umieść przykładowy input_video.mp4
plik wideo w katalogu. Chcemy przetestować, czy możemy:
- przeczytaj ten
.mp4
plik wideo i
- napisz nowy plik wideo (może być
.avi
lub .mp4
itp.)
Aby to zrobić, musimy mieć testowy kod Python, nazwij go test.py
. Umieść go w tym samym katalogu, co input_video.mp4
plik przykładowy .
Tak test.py
może wyglądać (wymieniłem tu zarówno kody nowszej, jak i starszej wersji - daj nam znać, który z nich działa / nie działa!).
(Nowsza wersja...)
import cv2
cap = cv2.VideoCapture("input_video.mp4")
print cap.isOpened() # True = read video successfully. False - fail to read video.
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter("output_video.avi", fourcc, 20.0, (640, 360))
print out.isOpened() # True = write out video successfully. False - fail to write out video.
cap.release()
out.release()
(Lub starsza wersja ...)
import cv2
cv2.VideoCapture("input_video.mp4")
print cv2.isOpened() # True = read video successfully. False - fail to read video.
fourcc = cv2.cv.CV_FOURCC(*'XVID')
out = cv2.VideoWriter("output_video.avi",fourcc, 20.0, (640,360))
print out.isOpened() # True = write out video successfully. False - fail to write out video.
cap.release()
out.release()
Ten test jest BARDZO WAŻNY. Jeśli chcesz przetwarzać pliki wideo, musisz upewnić się, że Anaconda / Spyder IDE może korzystać z FFMPEG (kodek wideo). Uruchomienie go zajęło mi kilka dni. Ale mam nadzieję, że zajmie ci to znacznie mniej czasu! :)
Uwaga: Jeszcze jedna bardzo ważna wskazówka podczas korzystania z Anaconda Spyder IDE. Upewnij się, że sprawdziłeś bieżący katalog roboczy (CWD) !!!
Wniosek
Aby w pełni korzystać z OpenCV z Anacondą (i Spyder IDE), musimy:
- Pobierz pakiet OpenCV z oficjalnej strony OpenCV
- Skopiuj i wklej
cv2.pyd
do katalogu Anaconda site-packages.
- Ustaw zmienne środowiskowe użytkownika, aby Anaconda wiedziała, gdzie znaleźć narzędzie FFMPEG.
- Przeprowadź testy, aby potwierdzić, że OpenCV i FFMPEG działają teraz.
Powodzenia!