-215:断言失败

时间:2020-01-19 13:58:31

标签: python opencv warnings assertion

我正在使用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'

2 个答案:

答案 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笔记本显示错误。

CAP_DSHOW Explanation from opencv documentation

有关详细信息: OpenCV Flags for video I/O