มี
opencv
(ห้องสมุดจากพวก OpenCV)cv
(ไลบรารีเก่าจากพวก OpenCV) และpyopencv
ctypes-opencv
กับบรรพบุรุษของมัน
อะไรคือความแตกต่างที่สำคัญและฉันควรใช้อันไหน?
มี
opencv
(ห้องสมุดจากพวก OpenCV) cv
(ไลบรารีเก่าจากพวก OpenCV) และpyopencv
ctypes-opencv
กับบรรพบุรุษของมันอะไรคือความแตกต่างที่สำคัญและฉันควรใช้อันไหน?
คำตอบ:
อย่างเป็นทางการ OpenCV เผยแพร่อินเตอร์เฟส Python สองประเภทcv
และcv2
.
ประวัติย่อ:
cv
ผมเริ่มทำงานใน ในสิ่งนี้ประเภทข้อมูล OpenCV ทั้งหมดจะถูกเก็บรักษาไว้เช่นนี้ ตัวอย่างเช่นเมื่อโหลดรูปภาพจะมีรูปแบบcvMat
เช่นเดียวกับใน C ++
สำหรับการดำเนินงานอาร์เรย์มีฟังก์ชั่นหลายอย่างcvSet2D
, cvGet2D
ฯลฯ และการอภิปรายบางคนบอกว่าพวกเขาจะช้าลง
สำหรับ imageROI คุณต้องมีฟังก์ชั่นพิเศษเช่นcvSetImageROI
.
หากคุณพบรูปทรงcvSeq
จะมีการส่งคืนโครงสร้างซึ่งใช้งานได้ไม่ดีเมื่อเทียบกับรายการ Python หรืออาร์เรย์ NumPy
(และฉันคิดว่าในไม่ช้าการพัฒนาจะหยุดลงก่อนหน้านี้มีเพียงอย่างเดียวcv
ต่อมา OpenCV มาพร้อมกับทั้งสองcv
และcv2
ตอนนี้มีในรุ่นล่าสุดมีเพียงcv2
โมดูลและcv
เป็นคลาสย่อยภายในcv2
คุณต้องโทรimport cv2.cv as cv
เพื่อเข้าถึง)
cv2:
cv2
และเป็นคนล่าสุด ในการนี้ทุกอย่างจะกลับมาเป็นNumPy
วัตถุเช่นndarray
และnative Python
วัตถุเช่นlists
, tuples
, dictionary
ฯลฯ ดังนั้นเนื่องจากนี้สนับสนุน NumPy คุณสามารถดำเนินการใด ๆ ที่นี่ numpy NumPy
เป็นไลบรารีการประมวลผลอาร์เรย์ที่เสถียรและรวดเร็ว
ตัวอย่างเช่นหากคุณโหลดรูปภาพระบบndarray
จะส่งคืนรูปภาพ
array[i,j]
ให้ค่าพิกเซลที่ตำแหน่ง (i, j)
นอกจากนี้สำหรับ imageROI สามารถใช้การแบ่งส่วนอาร์เรย์เช่นROI=array[c1:c2,r1:r2]
. ไม่จำเป็นต้องมีฟังก์ชั่นแยกต่างหาก
หากต้องการเพิ่มภาพสองภาพที่มีอยู่ไม่จำเป็นต้องเรียกใช้ฟังก์ชันใด ๆ res = img1+img2
เพียงแค่ทำ (แต่การเพิ่ม NumPy เป็นการดำเนินการแบบโมดูโลสำหรับอาร์เรย์ uint8 เช่นรูปภาพดูบทความความแตกต่างระหว่าง Matrix Arithmetic ใน OpenCV และ Numpyเพื่อทราบข้อมูลเพิ่มเติม
รูปทรงที่ส่งคืนคือรายการอาร์เรย์ Numpy คุณสามารถค้นหาการอภิปรายรายละเอียดเกี่ยวกับรูปทรงในรูปทรง - 1: การเริ่มต้น
ในระยะสั้นด้วย cv2 ทุกอย่างง่ายขึ้นและค่อนข้างเร็ว
การอภิปรายง่ายๆในการ NumPy ความเร็วขึ้นcv2
อยู่ในกองมากเกินคำถามเปรียบเทียบประสิทธิภาพของอินเตอร์เฟซ OpenCV-หลามพันธุ์และ CV2
pyopencv :
ฉันไม่ค่อยรู้เรื่องนี้ตั้งแต่ยังไม่ได้ใช้ แต่ดูเหมือนว่าจะหยุดการพัฒนาต่อไป
ฉันคิดว่ามันจะดีกว่าถ้ายึดติดกับห้องสมุดทางการ
ในระยะสั้นฉันขอแนะนำให้คุณใช้ cv2!
แก้ไข: คุณสามารถดูขั้นตอนการติดตั้งสำหรับcv2
โมดูลในการติดตั้ง OpenCV ใน Windows สำหรับงูหลาม