2012-05-02 29 views

Trả lời

116

Chính thức, OpenCV phát hành hai loại giao diện Python, cvcv2.

cv:

tôi bắt đầu làm việc trên cv. Trong đó, tất cả các kiểu dữ liệu OpenCV đều được giữ nguyên như vậy. Ví dụ: khi được tải, hình ảnh có định dạng cvMat, giống như trong C++.

Đối với hoạt động mảng, có một số chức năng như cvSet2D, cvGet2D, v.v. Và một số cuộc thảo luận cho biết, chúng chậm hơn.

Đối với imageROI, bạn cần các chức năng đặc biệt như cvSetImageROI.

Nếu bạn tìm thấy đường viền, thì cấu trúc cvSeq được trả về, điều này không tốt bằng cách so sánh với danh sách Python hoặc mảng NumPy.

(Và tôi nghĩ, sớm phát triển của nó sẽ được dừng lại. Trước đó, chỉ cv là ở đó. Sau đó, OpenCV đi kèm với cả cvcv2. Bây giờ, có trong các phiên bản mới nhất, chỉ có các mô-đun cv2cv là một lớp con bên cv2 Bạn cần phải gọi import cv2.cv as cv truy cập vào nó)

CV2:..

Và mới nhất của một là cv2. Trong trường hợp này, mọi thứ được trả lại dưới dạng NumPy các đối tượng như ndarraynative Python các đối tượng như lists, tuples, dictionary, v.v. Do hỗ trợ NumPy này, bạn có thể thực hiện bất kỳ thao tác nào ở đây. NumPy là một thư viện xử lý mảng rất ổn định và nhanh chóng.

Ví dụ: nếu bạn tải hình ảnh, trả lại ndarray.

array[i,j] cung cấp cho bạn giá trị pixel tại vị trí (i, j).

Ngoài ra, đối với imageROI, việc chia mảng có thể được sử dụng như ROI=array[c1:c2,r1:r2]. Không cần các chức năng riêng biệt.

Để thêm hai hình ảnh, không cần phải gọi bất kỳ chức năng nào, chỉ cần thực hiện res = img1+img2. (Nhưng bổ sung NumPy là một hoạt động modulo cho mảng uint8 như hình ảnh. Xem bài viết Difference between Matrix Arithmetic in OpenCV and Numpy để biết thêm.

Đường viền được trả lại là danh sách các mảng có nhiều mảng. Bạn có thể tìm thấy cuộc thảo luận chi tiết về Đường nét trong Contours - 1 : Getting Started.

Tóm lại, với mọi thứ cv2 được đơn giản hóa và khá nhanh.

Một cuộc thảo luận đơn giản về cách NumPy tăng tốc độ cv2 là trong Stack Overflow câu hỏi Performance comparison of OpenCV-Python interfaces, cv and cv2.

pyopencv:

Tôi không biết nhiều về điều này vì tôi đã không sử dụng nó. Nhưng nó dường như đã ngừng phát triển hơn nữa.

Tôi nghĩ tốt hơn là nên tuân thủ các thư viện chính thức.

Tóm lại, tôi khuyên bạn nên sử dụng cv2!

EDIT: Bạn có thể thấy thủ tục cài đặt cho module cv2 trong Install OpenCV in Windows for Python.

+0

Bạn có liên kết tới cv2 không? – Framester

+0

cv2 Giao diện Python sẽ được biên dịch và cài đặt nếu bạn đang xây dựng OpenCV từ các nguồn. Nếu bạn đang sử dụng các gói nhị phân cho Linux hoặc hệ điều hành khác, bạn nên tham khảo tài liệu OS/phân phối của mình. Xem http://goo.gl/MUjXi để được trợ giúp. –

+1

@Framester: xem quy trình cài đặt cho cv2 trong liên kết này: http://opencvpython.blogspot.in/2012/05/install-opencv-in-windows-for-python.html –

Các vấn đề liên quan