2012-02-10 23 views
5

Tôi mới sử dụng OpenCV và muốn sử dụng ràng buộc Python của nó.Tại sao mô-đun cv2 Python phụ thuộc vào (cũ) cv

Khi cố gắng ra các mẫu trên OSX, tôi nhận thấy

1.) Các cửa sổ imshow tạo ra không thay đổi kích thước

2.) Tôi có thể khắc phục điều đó bằng một cuộc gọi trước khi cv2.namedWindow, như: cv2.namedWindow ('zoom', cv2.cv.CV_WINDOW_NORMAL)

Chúng ta có thể thêm các biểu tượng như CV_WINDOW_NORMAL từ cv vào cv2!? Ai có quyền cam kết ràng buộc Python của openCV?

Cảm ơn, Sebastian Haase

+0

Ràng buộc Python chỉ là một trình bao bọc xung quanh giao diện C++, chủ yếu là một trình bao bọc xung quanh giao diện C. Đối với câu hỏi cuối cùng của bạn, gửi một tin nhắn đến danh sách gửi thư OpenCV và yêu cầu họ :) – karlphillip

Trả lời

9

Có một số omisions trong lib CV2 mới hiện nay. Thông thường đây là những hằng số không được di chuyển đến cv2 và vẫn còn trong chỉ cv. Dưới đây là một số mã để giúp bạn tìm thấy chúng:

import cv2 
import cv2.cv as cv 
nms = [(n.lower(), n) for n in dir(cv)] # list of everything in the cv module 
nms2 = [(n.lower(), n) for n in dir(cv2)] # list of everything in the cv2 module 

search = 'window' 

print "in cv2\n ",[m[1] for m in nms2 if m[0].find(search.lower())>-1] 
print "in cv\n ",[m[1] for m in nms if m[0].find(search.lower())>-1] 

CV2 là một wrapper trung thực hơn xung quanh C++ libs hơn cv trước. Ban đầu tôi thấy khó hiểu nhưng dễ dàng hơn nhiều khi bạn thực hiện thay đổi. Mã này dễ đọc hơn nhiều và thao tác ma trận cục bộ rất nhanh.

Tôi khuyên bạn nên tìm và sử dụng hằng số cv trong khi báo cáo lỗi của chúng dưới dạng lỗi cho trình theo dõi lỗi opencv tại willowgarage. cv2 tươi và bạc hà nhưng sẽ cải thiện.

FYI. nó cũng có giá trị instantiating các cửa sổ được đặt tên trước khi sử dụng, cũng giết chúng khi thoát. IMHO

Ví dụ:

import cv2 
if __name__ == '__main__': 
    cap = cv2.VideoCapture(0) # webcam 0 
    cv2.namedWindow("input") 
    cv2.namedWindow("grey") 
    key = -1 
    while(key < 0): 
     success, img = cap.read() 
     cv2.imshow("input", img) 
     grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
     cv2.imshow("grey", grey) 
     key = cv2.waitKey(1) 
    cv2.destroyAllWindows() 
+0

cảm ơn câu trả lời - bạn có biết ai (bao nhiêu người) có quyền thực hiện những sửa chữa đó (trên trăn ràng buộc) không? – sebhaase

+0

không - xin lỗi. đề nghị bạn tham gia/đăng ký dev maillist và yêu cầu. Rất tốt đám đông hữu ích. Bạn muốn sửa chữa – Neon22

+0

danh sách gửi thư nào? Có hai trên sourceforge, mà về cơ bản là chết (2 bài đăng mỗi tháng) - và chủ yếu ở các nhóm Yahoo, rất chậm và tôi đã không nhận được nhiều phản hồi trong hai tháng qua tôi đã tham gia (tôi đã tham gia một chút trước đây Tôi đã hỏi ở đây). Bạn có biết về một số khác không ?? – sebhaase

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