2012-02-10 81 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