Tôi đã tóm tắt giải pháp hiện đang hoạt động đầy đủ của mình, OpenCV-Python - Cách cài đặt gói OpenCV-Python cho Anaconda (Windows) . Tuy nhiên, tôi đã sao chép và dán các bit quan trọng vào bài viết này.
Tại thời điểm viết bài tôi đang sử dụng Windows 8.1, máy 64 bit, Anaconda / Python 2.x. (xem ghi chú bên dưới - điều này cũng hoạt động với Windows 10 và có thể cả Python 3.x nữa).
LƯU Ý 1: như được đề cập bởi @great_raisin (cảm ơn bạn) trong phần bình luận, tuy nhiên, giải pháp này dường như cũng hoạt động cho Windows 10.
CHÚ THÍCH 2: điều này có thể cũng sẽ hoạt động với Anaconda / Python 3.x. Nếu bạn đang sử dụng Windows 10 và Anaconda / Python 3.x và giải pháp này hoạt động, vui lòng thêm nhận xét bên dưới. Cảm ơn! (Cập nhật: ghi chú từ nhận xét "Hoạt động trên Windows 10")
CHÚ THÍCH 3: tùy thuộc vào việc bạn đang sử dụng Python 2.x hay 3.x, chỉ cần điều chỉnh print
câu lệnh cho phù hợp trong đoạn mã. tức là trong Python 3.x thì nó sẽ như vậy print("hello")
, và trong Python 2.x thì nó sẽ như vậy print "hello"
.
TL; DR
Để sử dụng OpenCV hoàn toàn với Anaconda (và Spyder IDE), chúng tôi cần:
- Tải xuống gói OpenCV từ trang web OpenCV chính thức
- Sao chép và dán vào
cv2.pyd
thư mục gói Anaconda.
- Đặt các biến môi trường của người dùng để Anaconda biết nơi tìm tiện ích FFMPEG.
- Thực hiện một số thử nghiệm để xác nhận OpenCV và FFMPEG hiện đang hoạt động.
(Đọc để biết hướng dẫn chi tiết ...)
Điều kiện tiên quyết
Cài đặt Anaconda
Anaconda về cơ bản là một IDE Python được đóng gói độc đáo, được vận chuyển với vô số gói hữu ích, chẳng hạn như NumPy, Pandas, IPython Notebook, v.v. Nó dường như được khuyến nghị ở mọi nơi trong cộng đồng khoa học. Kiểm tra Anaconda để cài đặt nó.
Cài đặt OpenCV-Python cho Anaconda
Lưu ý thận trọng: Ban đầu tôi đã thử cài đặt gói OpenCV của binstar.org, như được đề xuất. Tuy nhiên, phương pháp đó không bao gồm codec FFMPEG - tức là bạn có thể sử dụng OpenCV, nhưng bạn sẽ không thể xử lý video.
Các hướng dẫn sau đây đối với tôi được lấy cảm hứng từ video YouTube OpenCV này . Cho đến nay tôi đã có nó hoạt động trên cả máy tính để bàn và máy tính xách tay của tôi, cả máy 64 bit và Windows 8.1.
Tải xuống gói OpenCV
Đầu tiên, hãy truy cập trang web OpenCV chính thức để tải xuống gói OpenCV hoàn chỉnh. Chọn một phiên bản bạn thích (2.x hoặc 3.x). Tôi đang dùng Python 2.x và OpenCV 3.x - chủ yếu vì đây là cách Hướng dẫn OpenCV-Python được thiết lập / dựa trên.
Trong trường hợp của tôi, tôi đã trích xuất gói (về cơ bản là một thư mục) vào ổ C ( C:\opencv
) của tôi.
Sao chép và Dán tệp cv2.pyd
Thư mục gói Anaconda Site (ví dụ C:\Users\Johnny\Anaconda\Lib\site-packages
trong trường hợp của tôi) chứa các gói Python mà bạn có thể nhập. Mục tiêu của chúng tôi là sao chép và dán cv2.pyd
tệp vào thư mục này (để chúng tôi có thể sử dụng import cv2
mã Python.).
Để làm điều này, sao chép cv2.pyd
tập tin ...
Từ thư mục OpenCV này (phần đầu có thể hơi khác trên máy của bạn). Đối với Python 3.x, tôi đoán, chỉ cần thay đổi 2.x
cho 3.x
phù hợp.
# 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
Đối với thư mục Anaconda này (phần đầu có thể hơi khác trên máy của bạn):
C:\Users\Johnny\Anaconda\Lib\site-packages
Sau khi thực hiện bước này, bây giờ chúng ta sẽ có thể sử dụng import cv2
mã Python. NHƯNG, chúng tôi vẫn cần phải làm thêm một chút để FFMPEG (codec video) hoạt động (để cho phép chúng tôi làm những việc như xử lý video).
Đặt biến môi trường
Nhấp chuột phải vào "Máy tính của tôi" (hoặc "PC này" trên Windows 8.1) → nhấp chuột trái Thuộc tính → nhấp chuột trái vào tab "Nâng cao" → nhấp chuột trái vào nút "Biến môi trường ...".
Thêm một biến người dùng mới để trỏ đến OpenCV (x86 cho hệ thống 32 bit hoặc x64 cho hệ thống 64 bit). Tôi hiện đang sử dụng máy 64 bit.
| 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` |
Nối %OPENCV_DIR%\bin
vào biến người dùng PATH
.
Ví dụ: PATH
biến người dùng của tôi trông như thế này ...
Trước:
C:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts
Sau:
C:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts;%OPENCV_DIR%\bin
Đây là nó chúng ta đã hoàn thành! FFMPEG đã sẵn sàng để được sử dụng!
Kiểm tra để xác nhận
Chúng ta cần kiểm tra xem bây giờ chúng ta có thể thực hiện những điều này trong Anaconda hay không (thông qua Spyder IDE):
- Nhập gói OpenCV
- Sử dụng tiện ích FFMPEG (để đọc / ghi / xử lý video)
Kiểm tra 1: Chúng ta có thể nhập OpenCV không?
Để xác nhận rằng Anaconda hiện có thể nhập gói OpenCV-Python (cụ thể là cv2
), hãy phát hành những thứ này trong bảng điều khiển IPython:
import cv2
print cv2.__version__
Nếu gói cv2
được nhập OK không có lỗi và cv2
phiên bản được in ra, thì tất cả chúng ta đều tốt! Đây là một ảnh chụp nhanh:
(nguồn: mathalope.co.uk )
Kiểm tra 2: Chúng ta có thể sử dụng codec FFMPEG không?
Đặt một input_video.mp4
tệp video mẫu trong một thư mục. Chúng tôi muốn kiểm tra xem chúng tôi có thể:
- đọc
.mp4
tệp video này và
- viết ra một tệp video mới (có thể
.avi
hoặc .mp4
v.v.)
Để làm điều này, chúng ta cần phải có một mã Python thử nghiệm, hãy gọi nó test.py
. Đặt nó trong cùng thư mục với input_video.mp4
tập tin mẫu .
Đây là những gì test.py
có thể trông giống như (tôi đã liệt kê cả mã phiên bản mới hơn và cũ hơn ở đây - hãy cho chúng tôi biết cái nào hoạt động / không hoạt động cho bạn!).
(Phiên bản mới hơn...)
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()
(Hoặc phiên bản cũ hơn ...)
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()
Bài kiểm tra này RẤT QUAN TRỌNG. Nếu bạn muốn xử lý tệp video, bạn cần đảm bảo rằng Anaconda / Spyder IDE có thể sử dụng FFMPEG (codec video). Phải mất nhiều ngày để nó hoạt động. Nhưng tôi hy vọng nó sẽ làm bạn mất ít thời gian hơn! :)
Lưu ý: Một mẹo rất quan trọng khi sử dụng Anaconda Spyder IDE. Hãy chắc chắn rằng bạn kiểm tra thư mục làm việc hiện tại (CWD) !!!
Phần kết luận
Để sử dụng OpenCV hoàn toàn với Anaconda (và Spyder IDE), chúng tôi cần:
- Tải xuống gói OpenCV từ trang web OpenCV chính thức
- Sao chép và dán vào
cv2.pyd
thư mục gói Anaconda.
- Đặt các biến môi trường của người dùng để Anaconda biết nơi tìm tiện ích FFMPEG.
- Thực hiện một số thử nghiệm để xác nhận OpenCV và FFMPEG hiện đang hoạt động.
Chúc may mắn!