我正在使用vscode,这是我的代码
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
这是给我这个错误
[WARN:0]全局 C:\ projects \ opencv-python \ opencv \ modules \ videoio \ src \ cap_msmf.cpp (674)SourceReaderCB ::〜SourceReaderCB
终止异步回调
[ERROR:0]全局 C:\ projects \ opencv-python \ opencv \ modules \ videoio \ src \ cap.cpp(193) cv :: VideoCapture :: open VIDEOIO(DSHOW):引发了未知的C ++异常!
回溯(最近通话最近一次):
文件“ c:/Users/VVA/Desktop/demo.py”,第8行,位于
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error:OpenCV(4.1.2) C:\ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ color.cpp:182: 错误:(-215:声明失败)函数中的__src.empty() 'cv :: cvtColor'
答案 0 :(得分:0)
它显示frame
的大小为0。当您从
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
检查是否确实加载了frame
。
答案 1 :(得分:0)
您遇到此错误是因为您的VideoCapture(0)
没有返回相机对象,因此cap.read()
无法读取任何内容。如果您将在ret
之后打印ret, frame=cap.read()
,则输出为 False
现在,解决此问题的方法非常简单。
更改
cap=cv2.VideoCapture(0)
到
cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)
然后尝试通过命令提示符下的.py
文件运行此命令。有时jupyter笔记本显示错误。
有关详细信息: OpenCV Flags for video I/O