为什么Python cv2模块依赖于(旧)cv

时间:2012-02-10 10:26:03

标签: python opencv

我是OpenCV的新手,想使用它的Python绑定。

在OSX上试用样品时,我注意到了

1。)Windows imshow创建的窗口不可调整大小

2。)我可以通过事先调用cv2.namedWindow来解决这个问题,例如: cv2.namedWindow('zoom',cv2.cv.CV_WINDOW_NORMAL)

我们可以将cv中的CV_WINDOW_NORMAL等符号添加到cv2中吗? 谁拥有openCV Python绑定的权利?

谢谢, Sebastian Haase

1 个答案:

答案 0 :(得分:9)

当前新的cv2 lib中有一些缺点。通常这些是尚未迁移到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是比以前的cv更加忠实于C ++库的包装器。我一开始觉得很困惑,但是一旦做出改变就会容易得多。代码更容易阅读,numpy矩阵操作非常快。

我建议你找到并使用cv常量,同时向willowgarage的opencv bug跟踪器报告它们的遗漏。 cv2是新鲜的薄荷,但会有所改善。

FYI。在使用之前很好地实例化命名窗口,并在退出时杀死它们。 IMHO

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