Я узагальнив своє зараз повністю працююче рішення, OpenCV-Python - Як встановити пакет OpenCV-Python в Anaconda (Windows) . Проте я скопіював і вклеїв важливі шматочки до цієї публікації.
На момент написання я використовував 64-розрядну машину Windows 8.1, Anaconda / Python 2.x. (див. примітки нижче - це працює і для Windows 10, і, ймовірно, також для Python 3.x).
ПРИМІТКА 1: як згадувалося @great_raisin (дякую) у розділі коментарів, однак, схоже, це рішення працює і для Windows 10.
ПРИМІТКА 2: це, ймовірно, буде працювати і для Anaconda / Python 3.x. Якщо ви використовуєте Windows 10 та Anaconda / Python 3.x, і це рішення працює, будь ласка, додайте коментар нижче. Дякую! (Оновлення: відмітка з коментаря "Робота в Windows 10")
ПРИМІТКА 3: залежно від того, використовуєте ви Python 2.x або 3.x, просто відрегулюйте відповідний print
вираз у фрагментах коду. тобто в Python 3.x це було б print("hello")
, а в Python 2.x було б print "hello"
.
TL; DR
Щоб повноцінно використовувати OpenCV з Anaconda (і ID Spyder), нам потрібно:
- Завантажте пакет OpenCV з офіційного сайту OpenCV
- Скопіюйте та вставте
cv2.pyd
файл у каталог пакунків Anaconda.
- Встановіть змінні середовища користувача таким чином, щоб Anaconda знала, де знайти утиліту FFMPEG.
- Зробіть кілька тестів для підтвердження OpenCV та FFMPEG зараз працюють.
(Прочитайте детальну інструкцію ...)
Необхідна умова
Встановіть Anaconda
Анаконда - це, по суті, добре упакований Python IDE, який постачається з безліччю корисних пакетів, таких як NumPy, Pandas, IPython Notebook тощо. Це, здається, рекомендується скрізь у науковому співтоваристві. Перевірте Anaconda, щоб встановити її.
Встановіть OpenCV-Python в Anaconda
Обережне Примітка. Спочатку я спробував встановити пакет binstar.org OpenCV, як було запропоновано. Однак цей метод не включає кодек FFMPEG - тобто ви можете використовувати OpenCV, але ви не зможете обробляти відео.
Наступна інструкція працює для мене натхненна цим відео на YouTube OpenCV . Поки що я працюю як на моєму робочому столі, так і на ноутбуці, як на 64-бітних машинах, так і на Windows 8.1.
Завантажте пакет OpenCV
По-перше, перейдіть на офіційний сайт OpenCV, щоб завантажити повний пакет OpenCV. Виберіть потрібну вам версію (2.x або 3.x). Я перебуваю на Python 2.x та OpenCV 3.x - головним чином тому, що саме так налаштовані / засновані підручники OpenCV-Python .
У моєму випадку я витягнув пакет (фактично папку) прямо на свій C диск ( C:\opencv
).
Скопіюйте та вставте файл cv2.pyd
Каталог пакунків сайтів Anaconda (наприклад, C:\Users\Johnny\Anaconda\Lib\site-packages
у моєму випадку) містить пакети Python, які ви можете імпортувати. Наша мета - скопіювати та вставити cv2.pyd
файл у цей каталог (щоб ми могли використовувати їх import cv2
у кодах Python.).
Для цього скопіюйте cv2.pyd
файл ...
З цього каталогу OpenCV (початкова частина може дещо відрізнятися на вашій машині). Для Python 3.x, я думаю, просто змініть 2.x
на 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
До цього каталогу Anaconda (початкова частина може дещо відрізнятися на вашій машині):
C:\Users\Johnny\Anaconda\Lib\site-packages
Після виконання цього кроку ми зможемо скористатися import cv2
в коді Python. Але нам ще потрібно зробити трохи більше роботи, щоб FFMPEG (відеокодек) працював (щоб ми могли робити такі речі, як обробка відео).
Встановити екологічні змінні
Клацніть правою кнопкою миші «Мій комп'ютер» (або «Цей ПК» у Windows 8.1) → клацніть лівою кнопкою миші Властивості → клацніть лівою кнопкою миші вкладку «Додатково» → лівою кнопкою миші кнопку «Змінні середовища ...».
Додайте нову змінну користувача, щоб вказати на OpenCV (або x86 для 32-бітної системи, або x64 для 64-бітної системи). Зараз я перебуваю на 64-розрядній машині.
| 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` |
Додавати %OPENCV_DIR%\bin
до змінної користувача PATH
.
Наприклад, моя PATH
змінна користувач виглядає приблизно так ...
Перед:
C:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts
Після:
C:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts;%OPENCV_DIR%\bin
Це ми зробили! FFMPEG готовий до використання!
Тест для підтвердження
Нам потрібно перевірити, чи можемо ми зараз це зробити в Анаконда (через Spyder IDE):
- Імпортуйте пакет OpenCV
- Використовуйте утиліту FFMPEG (для читання / запису / обробки відео)
Тест 1: Чи можна імпортувати OpenCV?
Щоб підтвердити, що Anaconda тепер може імпортувати пакет OpenCV-Python (а саме cv2
), випустіть їх у консолі IPython:
import cv2
print cv2.__version__
Якщо пакет cv2
імпортується ОК без помилок, а cv2
версія роздрукована, то ми всі хороші! Ось знімок:
(джерело: mathalope.co.uk )
Тест 2: Чи можемо ми використовувати кодек FFMPEG?
Помістіть зразок input_video.mp4
відеофайлу в каталог. Ми хочемо перевірити, чи можемо ми:
- прочитати цей
.mp4
відеофайл та
- випишіть новий відео-файл (може бути
.avi
і .mp4
т.д.)
Для цього нам потрібно мати тестовий код Python, викликати його test.py
. Помістіть його в той же каталог, що і зразокinput_video.mp4
файл .
Ось як це test.py
може виглядати (я перерахував тут новіші та старіші коди версій - дайте нам знати, яка з них працює / не працює для вас!).
(Більш нова версія ...)
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()
(Або старішої версії ...)
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()
Цей тест ДУЖЕ ВАЖЛИВО. Якщо ви хочете обробити відеофайли, вам слід переконатися, що Anaconda / Spyder IDE може використовувати FFMPEG (відеокодек). Мені знадобилися дні, щоб я працював. Але я сподіваюся, що це займе у вас набагато менше часу! :)
Примітка: Ще одна дуже важлива порада при використанні IDE Anaconda Spyder. Обов’язково перевірте поточний робочий каталог (CWD) !!!
Висновок
Щоб повноцінно використовувати OpenCV з Anaconda (і ID Spyder), нам потрібно:
- Завантажте пакет OpenCV з офіційного сайту OpenCV
- Скопіюйте та вставте
cv2.pyd
файл у каталог пакунків Anaconda.
- Встановіть змінні середовища користувача таким чином, щоб Anaconda знала, де знайти утиліту FFMPEG.
- Зробіть кілька тестів для підтвердження OpenCV та FFMPEG зараз працюють.
Удачі!