python - OpenCV VideoCapture 和 (-215:Assertion failed) !_src.empty() in function 'cvtColor'
问题描述
这段代码最初工作得很好。但是当我再次运行它时,会出现以下错误。我搜索了很多有关该错误的信息,但找不到解决方案。任何帮助,将不胜感激。
cv2.error: OpenCV(4.4.0) /tmp/pip-wheel-frffvd08/opencv-python/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
下面的代码是我写的Python代码。
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
while(True):
#while(cap.isOpened()):
ret, frame = cap.read()
frame = cv2.flip(frame, -1) # Flip camera vertically
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', frame)
cv2.imshow('gray', gray)
k = cv2.waitKey(30) & 0xff
if k == 27: # press 'ESC' to quit
break
cap.release()
cv2.destroyAllWindows()
解决方案
!_src.empty() 表示您有空框架。
当 cv2 无法从相机/文件/流中获取帧时,它不会显示错误,但会在帧中设置 None 并在 ret 中设置 False - 您必须检查这些值之一
if frame is not None:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# ... other code ...
else:
print("empty frame")
exit(1)
或者
if ret: # if ret is True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# ... other code ...
else:
print("empty frame")
exit(1)
有时 cv2 无法找到 haarcascades 文件。并且有一个带有.xml文件夹路径的特殊变量 - cv2.data.haarcascades - 你可能需要
faceCascade = cv2.CascadeClassifier( os.path.join(cv2.data.haarcascades, "haarcascade_frontalface_default.xml") )
推荐阅读
- concurrency - Redis 用于处理高并发和容量有限的模型?
- css - 下拉导航栏的问题
- python - 如何按性别显示包含多个选项的直方图
- javascript - ReactJS 无法让搜索过滤器(文本)工作
- c# - 声明式和命令式模式是一种设计模式吗?
- javascript - Close accordion upon opening another accordion with different parent
- smtp - 如何解决 net::ERR_CERT_DATE_INVALID smtp.js
- vue.js - 成功发送的电子邮件上显示联系表格和 Toast 通知
- ios - 我在 iOS 设备中的 listview 有问题
- r - 重新索引 R 中的列