2012-02-10 30 views
5

我是OpenCV的新手,希望使用它的Python綁定。爲什麼Python cv2模塊依賴於(舊)cv

當OSX試用樣品,我注意到

1)imshow創建是不可調整大小

2)我可以修復,即與cv2.namedWindow,像之前調用Windows: cv2.namedWindow( '放大',cv2.cv.CV_WINDOW_NORMAL)

我們可以添加符號像CV_WINDOW_NORMAL從簡歷到CV2!? 誰承諾openCV的Python綁定?

感謝, 塞巴斯蒂安·哈澤

+0

Python綁定只是C++接口的一個包裝,它大多是C接口的包裝。至於你的最後一個問題,發送一條消息到OpenCV郵件列表,並詢問他們:) – karlphillip 2012-02-10 11:59:26

回答

9

有在當前新CV2 LIB一些omisions。通常這些常量沒有被遷移到cv2,並且仍然只是cv。 下面是一些代碼,以幫助你找到他們:

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是圍繞C++庫比以前的品種更忠實的包裝。我首先感到困惑,但一旦你做出改變,它就容易得多。代碼更容易閱讀,而numpy矩陣操作速度非常快。

我建議你找到並使用cv常量,同時將它們的遺漏報告爲willowgarage上的opencv bug跟蹤器的錯誤。 cv2是新鮮和薄荷的,但會改善。

僅供參考。很有必要在使用前實例化命名窗口,並在退出時將其殺死。恕我直言

E.g.

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

感謝您的答案 - 你知道誰(有多少人)有權利做這些修復(在Python綁定)? – sebhaase 2012-04-03 07:48:07

+0

不 - 對不起。建議你加入/訂閱開發maillist並詢問。非常好的有用的人羣。急於修復 – Neon22 2012-04-03 12:32:31

+0

哪個郵件列表? Sourceforge上有兩個,基本上已經死了(每個月發佈兩個帖子) - 而且是雅虎團隊的主要發佈者,這非常慢,而且在我加入的最近兩個月中我沒有得到太多回應(我之前加入了一些我在這裏問)。你知道另一個嗎? – sebhaase 2012-04-03 16:51:18