我刚刚开始熟悉 openCV,在尝试使用笔记本电脑的网络摄像头进行基本视频处理时遇到了问题:
import cv2 as cv
import numpy as np
cap= cv.VideoCapture(0)
while True:
ret,frame =cap.read()
cv.imshow("frame",frame)
k=cv.waitKey(0)
if k==27 :
break
cap.release()
cv.destroyAllWindows()
输出:
显然,网络摄像头打开了,窗口也正常打开了,但没有显示任何提要。
我对下载的视频尝试了相同的代码。 ( cap= cv.VideoCapture("test.mp4")
),然而,窗口只显示一个,直到我退出程序。
代码有什么问题?
答案 0 :(得分:2)
cv2.waitKey(0) 将显示静止图像,因此要获得连续供稿,您需要执行 cv2.waitKey(1) 如下所示:
k=cv.waitKey(1)
if k==27 :
break
这解决了您的第二个问题,就您的第一个问题而言,我认为您的网络摄像头存在问题,请先进行测试。
现在当视频结束时, cv.imshow() 将在 'frame' 内得到一个空对象,它会引发错误。为了防止这种情况,请使用如下检查:
ret,frame =cap.read()
if frame is None:
break
cv.imshow("frame",frame)