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()
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