退出功能不支持';我不能用python在OpenCV中工作
我只想捕获一帧,将其保存到退出功能不支持';我不能用python在OpenCV中工作,python,opencv,image-processing,Python,Opencv,Image Processing,我只想捕获一帧,将其保存到test.png,然后退出代码。 在这个程序中,exit()不起作用,我每次都必须从终端使用CTRL+C import cv2 #cv2.namedWindow("window") cap = cv2.VideoCapture(0) if cap.isOpened(): # if we are able to capture the first frame. val, frame = cap.read() else: val = False whil
test.png
,然后退出代码。
在这个程序中,exit()
不起作用,我每次都必须从终端使用CTRL+C
import cv2
#cv2.namedWindow("window")
cap = cv2.VideoCapture(0)
if cap.isOpened(): # if we are able to capture the first frame.
val, frame = cap.read()
else:
val = False
while val:
#cv2.imshow("window", frame)
cv2.imwrite('test.png',frame)
val, frame = cap.read()
key = cv2.waitKey(20)
if key == 27: # exit on ESC
break
cap.release
cv2.destroyAllWindows()
exit()
提前感谢。尝试将&0xFF添加到等待键:
key = cv2.waitKey(20) & 0xFF
您还需要一个活动窗口:
注
仅当至少创建了一个HighGUI窗口且该窗口处于活动状态时,该函数才起作用。如果有多个HighGUI窗口,则其中任何一个都可以处于活动状态
方法waitkey(t)以毫秒为单位等待t,因此您的代码在每个循环中等待20毫秒的按键时间。考虑到你的
cv2.imwrite('test.png',frame)
写入文件可能需要一些时间,您是否在错误的时刻按下退出键?
cv::waitKey
仅在存在任何openCV窗口且可能处于活动状态时才起作用
由于您对#cv2.namedWindow(“窗口”)
和#cv2.imshow(“窗口”,帧)
进行了注释,因此没有等待键时间,也没有机会获取键
如果激活namedWindow和imshow,它能工作吗
当然,你可以试试看
if key > 0: # exit on ESC
break
要取消任何按键操作(但仍需要活动的openCV窗口)
要捕获单个帧,请尝试以下操作:
import cv2
cap = cv2.VideoCapture(0)
val = False
maxTry = 100 # maximum number of tries to capture a frame from an opened device
cTry = 0
if cap.isOpened(): # if we are able to capture the first frame.
while (!val) and (cTry < maxTry)
val, frame = cap.read()
cTry = cTry + 1
else:
val = False
if val:
cv2.imwrite('test.png',frame)
else:
print "No image captured"
cap.release
exit()
导入cv2
cap=cv2.视频捕获(0)
val=False
maxTry=100#从打开的设备捕获帧的最大尝试次数
cTry=0
if cap.isOpened():#如果我们能够捕获第一帧。
而(!val)和(cTry
我不是python程序员,所以请原谅我在python3中出现的语法错误(并给我一个提示来纠正它们)
cv2.imshow('imafast', frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
你确定已经到了休息时间吗?我不这么认为,ESC不工作@Vanojx1try在if语句之前在key变量上插入print语句,这样您将发现是否达到了中断(未达到)。然后你可以更新你的问题。@Bouramas,它一直在打印数字255。这样你就看到了问题@amolkulkarni。这就是为什么没有达到break语句的原因。还有其他关键点有效吗?不要与27相比,多做一次测试。使用cvw.imshow显示图像。也许窗口捕捉到了击键,什么都没有。但sameNote函数仅在至少创建了一个HighGUI窗口且该窗口处于活动状态时才起作用。如果有几个HighGUI窗口,它们中的任何一个都可以处于活动状态。这是opencv应该提供一种以编程方式激活窗口的方法的一个很好的理由!这基本上就是我建议的,显然它仍然不起作用。当我删除注释时,它就起作用了。但正如我在问题中提到的,我希望它捕获一帧并退出。