Python OpenCV(-215:断言失败)_函数';CVT颜色
所以,基本上我正在用GoogleColab编写一个程序,它将使用python和opencv2通过网络摄像头检测人脸。 “我有Ubuntu 19.10,如果这有帮助的话” 此时,将出现一个断言错误Python OpenCV(-215:断言失败)_函数';CVT颜色,python,opencv,Python,Opencv,所以,基本上我正在用GoogleColab编写一个程序,它将使用python和opencv2通过网络摄像头检测人脸。 “我有Ubuntu 19.10,如果这有帮助的话” 此时,将出现一个断言错误 Traceback (most recent call last) <ipython-input-94-ca2ba51b9064> in <module>() 7 ret, frame = video_capture.read() 8 ---->
Traceback (most recent call last)
<ipython-input-94-ca2ba51b9064> in <module>()
7 ret, frame = video_capture.read()
8
----> 9 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
error: OpenCV(4.1.2) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
回溯(最近一次呼叫上次)
在()
7 ret,frame=video\u capture.read()
8.
---->9灰色=cv2.CVT颜色(边框,cv2.COLOR\u BGR2GRAY)
错误:OpenCV(4.1.2)/io/OpenCV/modules/imgproc/src/color.cpp:182:错误:(-215:断言失败)_函数“cvtColor”中的src.empty()
当我运行此代码时,没有任何东西在使用网络摄像头_src.empty()表示框架为空
当cv2
无法从相机/文件/流中获取frame
时,它不会显示错误,但会在frame
中设置None
,在ret
中设置False
,您必须检查其中一个值
if frame is not None:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# ... other code ...
else:
print("empty frame")
exit(1)
或
或
或
顺便说一句:如果帧:你不能使用更短的,因为当它从相机获取图像时,frame
会获取numpy.array()
,它会尝试分别检查每个单元格中的值,并显示警告,要求使用.all()
或.any()
-但.all()
或.any()
当帧
为无
时,可能会出现错误
顺便说一句:有时cv2
在查找haarcascades文件时遇到问题。还有一个特殊变量,它带有指向文件夹的路径.xml
-cv2.data.haarcascades
,您可能需要
faceCascade = cv2.CascadeClassifier( os.path.join(cv2.data.haarcascades, "haarcascade_frontalface_default.xml") )
哦,上帝。。。我刚刚意识到我在Google Colab虚拟环境中工作,这就是为什么它无法连接到我的本地摄像头。这意味着你有空的帧。当cv2
无法从相机/文件/流中获取帧时,它不会显示错误,但会在ret
中设置None
,如果ret不是None,则必须使用跳过代码或退出程序。当我编写时,如果ret不是None,则会出现相同的错误。所以ret
不是None
,然后我写了如果frame是None:print(“None”)
,它给了我None
,现在我很困惑。我的错误-它在frame
中给出None
,在ret
中给出False
,好的,所以,如果frame不是None:
或者如果ret:
,我应该涂抹什么。我换了密码作为回答。
if ret: # if ret is True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# ... other code ...
else:
print("empty frame")
exit(1)
if not ret:
print("empty frame")
exit(1)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# ... other code ...
if frame is None:
print("empty frame")
exit(1)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# ... other code ...
faceCascade = cv2.CascadeClassifier( os.path.join(cv2.data.haarcascades, "haarcascade_frontalface_default.xml") )