Python 2.7 opencv:在鼠标上保存图像单击
所以我一直在摆弄opencv,我想知道如何通过鼠标点击来捕捉图像。我环顾了一下四周,但似乎找不到答案。这是到目前为止我掌握的代码Python 2.7 opencv:在鼠标上保存图像单击,python-2.7,opencv,Python 2.7,Opencv,所以我一直在摆弄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
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,但我不知道怎么做。谢谢 好的。因此,我想出了如何做到这一点,我张贴在下面的修复
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()
然而,它是相当无响应的(例如,我必须点击多次才能获得保存的图像,这可能是因为鼠标坏了,我将在以后测试),我还没有弄清楚原因。如果有人能解释为什么,请解释