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

seb*_*ase 5 python opencv

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

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

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

2.)我可以通过事先调用cv2.namedWindow来修复它,例如:cv2.namedWindow('zoom',cv2.cv.CV_WINDOW_NORMAL)

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

谢谢,Sebastian Haase

Neo*_*n22 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]
Run Code Online (Sandbox Code Playgroud)

cv2是比以前的cv更加忠实的C++库包装器.我一开始发现它很混乱,但是一旦你做出改变就会容易得多.代码更容易阅读,numpy矩阵操作非常快.

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

仅供参考.在使用之前很好地实例化命名窗口,并在退出时杀死它们.恕我直言

例如

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()
Run Code Online (Sandbox Code Playgroud)