ผมได้สรุปวิธีการแก้ปัญหาตอนนี้ทำงานอย่างเต็มที่ของฉันOpenCV หลาม - วิธีการติดตั้งแพคเกจ OpenCV-งูหลามงู (Windows) อย่างไรก็ตามฉันได้คัดลอกและวางบิตสำคัญในโพสต์นี้
ตอนที่เขียนผมใช้ Windows 8.1, เครื่อง 64- บิต, 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
คำสั่งตามลำดับในตัวอย่างโค้ด เช่นในหลาม 3.x มันจะเป็นprint("hello")
และในหลาม 2.x print "hello"
มันจะเป็น
TL; DR
ในการใช้ OpenCV อย่างสมบูรณ์กับ Anaconda (และ Spyder IDE) เราจำเป็นต้อง:
- ดาวน์โหลดแพ็คเกจ OpenCV จากเว็บไซต์ทางการ OpenCV
- คัดลอกและวาง
cv2.pyd
ไปยังไดเรกทอรี Anaconda site-packages
- ตั้งค่าตัวแปรสภาพแวดล้อมของผู้ใช้เพื่อให้ Anaconda รู้ว่าจะหายูทิลิตี้ FFMPEG ได้ที่ไหน
- ทำการทดสอบเพื่อยืนยันว่า OpenCV และ FFMPEG ทำงานได้แล้ว
(อ่านต่อเพื่อดูรายละเอียดคำแนะนำ ... )
ที่จำเป็นต้องมี
ติดตั้ง Anaconda
Anaconda นั้นเป็น Python IDE ที่ได้รับการบรรจุอย่างดีซึ่งมาพร้อมกับแพคเกจที่มีประโยชน์มากมายเช่น NumPy, Pandas, IPython Notebook ฯลฯ ดูเหมือนว่าจะแนะนำได้ทุกที่ในชุมชนวิทยาศาสตร์ ลองชมAnacondaเพื่อทำการติดตั้ง
ติดตั้ง OpenCV-Python ไปที่ Anaconda
ข้อควรระวัง: ตอนแรกฉันลองทำการติดตั้งแพคเกจ binstar.org OpenCV ตามที่แนะนำแล้ว อย่างไรก็ตามวิธีดังกล่าวไม่รวมตัวแปลงสัญญาณ FFMPEG เช่นคุณอาจใช้ OpenCV ได้ แต่คุณจะไม่สามารถประมวลผลวิดีโอได้
การเรียนการสอนต่อไปนี้สำหรับฉันเป็นแรงบันดาลใจจากวิดีโอOpenCV YouTubeนี้ จนถึงตอนนี้ฉันได้ทำงานทั้งบนเดสก์ท็อปและแล็ปท็อปของฉันทั้งเครื่อง 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
ในรหัสหลามของเรา)
หากต้องการทำสิ่งนี้ให้คัดลอกcv2.pyd
ไฟล์ ...
จากไดเรกทอรี OpenCV นี้ (ส่วนเริ่มต้นอาจแตกต่างกันเล็กน้อยในเครื่องของคุณ) สำหรับงูหลาม 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 (ตัวแปลงสัญญาณวิดีโอ) ทำงาน (เพื่อให้เราสามารถทำสิ่งต่าง ๆ เช่นการประมวลผลวิดีโอ)
ตั้งค่าตัวแปรสภาพแวดล้อม
คลิกขวาที่ "My Computer" (หรือ "PC นี้" ใน Windows 8.1) →คลิกซ้ายที่Properties →คลิกซ้ายที่แท็บ "Advanced" →คลิกซ้ายที่ปุ่ม "ตัวแปรสภาพแวดล้อม ... "
เพิ่ม User Variable ใหม่ให้ชี้ไปที่ 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 พร้อมใช้งานแล้ว!
ทดสอบเพื่อยืนยัน
เราต้องทดสอบว่าตอนนี้เราสามารถทำได้ใน Anaconda (ผ่าน 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
อื่น ๆ )
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 (ตัวแปลงสัญญาณวิดีโอ) ฉันใช้เวลาหลายวันกว่าจะทำงานได้ แต่ฉันหวังว่าคุณจะใช้เวลาน้อยลง! :)
หมายเหตุ: อีกหนึ่งเคล็ดลับที่สำคัญมากเมื่อใช้ Anaconda Spyder IDE ตรวจสอบให้แน่ใจว่าคุณตรวจสอบไดเรกทอรีการทำงานปัจจุบัน (CWD) !!!
ข้อสรุป
ในการใช้ OpenCV อย่างสมบูรณ์กับ Anaconda (และ Spyder IDE) เราจำเป็นต้อง:
- ดาวน์โหลดแพ็คเกจ OpenCV จากเว็บไซต์ทางการ OpenCV
- คัดลอกและวาง
cv2.pyd
ไปยังไดเรกทอรี Anaconda site-packages
- ตั้งค่าตัวแปรสภาพแวดล้อมของผู้ใช้เพื่อให้ Anaconda รู้ว่าจะหายูทิลิตี้ FFMPEG ได้ที่ไหน
- ทำการทดสอบเพื่อยืนยันว่า OpenCV และ FFMPEG ทำงานได้แล้ว
โชคดี!