用cv2调用摄像头为何输出图片而非视频?该如何修改代码?
问题原因
问题出在cv2.waitKey(0)的参数设置:
cv2.waitKey()的入参是等待键盘输入的毫秒数,传0代表无限期等待用户按下任意按键才会继续执行后续代码,所以程序每显示一帧就会卡住,只有手动按键才会刷新下一帧,表现为连续静态图。
修改方案
把waitKey的参数改为1~10的小整数,同时补充异常判断、退出逻辑和资源释放代码即可,修改后的完整代码如下:
import cv2 cap = cv2.VideoCapture(0) # 校验摄像头是否正常打开 if not cap.isOpened(): print("摄像头打开失败") exit() while True: success, img = cap.read() # 帧读取失败直接退出 if not success: print("帧读取失败,程序退出") break cv2.imshow("Image", img) # 等待1毫秒,按下ESC键(ASCII码27)退出 if cv2.waitKey(1) & 0xFF == 27: break # 释放摄像头资源 cap.release() # 销毁所有OpenCV窗口 cv2.destroyAllWindows()
内容的提问来源于stack exchange,提问作者Aditya . Mallick
相关产品推荐
相关产品推荐

