所以我一直在搞乱opencv,并试图找出如何通过鼠标点击捕获图像。我看了一下,但我似乎无法找到答案。这是我到目前为止的代码。
import numpy as np
import cv2
def captureFrame(event,frame):
if event == cv2.EVENT_LBUTTONDBLCLK:
cv2.imwrite('pictures/testFrame.png',frame) # want to save frame here
def main():
cv2.setMouseCallback('frame',captureFrame)
cap = cv2.VideoCapture(0)
cv2.namedWindow('frame',cv2.CV_WINDOW_AUTOSIZE)
while(True):
ret, frame = cap.read()
if ret:
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
问题是我想将帧传递给回调函数captureFrame,但我不知道该怎么做。谢谢!
答案 0 :(得分:0)
好。所以我想出了如何做到这一点,我发布了下面的修复程序。
import numpy as np
import cv2
def main():
cap = cv2.VideoCapture(0)
cv2.namedWindow('frame',cv2.CV_WINDOW_AUTOSIZE)
count = 1
while(True):
ret, frame = cap.read()
cv2.setMouseCallback('frame',captureFrame,frame)
if ret:
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
def captureFrame(event,x,y,flags,frame):
if event == cv2.EVENT_LBUTTONDBLCLK:
cv2.imwrite('pictures/test.png',frame) # want to save frame here
if __name__ == "__main__":
main()
然而,这是非常反应迟钝的(因为我必须多次点击才能获得保存的图像,这可能是因为鼠标虽然很糟糕但我将不得不在以后测试)并且我还没有我弄明白了为什么呢。如果有人能解释为什么请这样做!