我是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
答案 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()