cv2.error:OpenCV(4.4.0)错误:(-215:断言失败)!_src.empty()在函数'cvtColor'中

时间:2020-10-25 16:23:38

标签: python opencv raspberry-pi picamera

此代码本来可以正常工作。 但是当我再次运行它时,出现以下错误。 我搜索了很多有关该错误的信息,但找不到解决方案。 任何帮助将不胜感激。

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()

1 个答案:

答案 0 :(得分:0)

!_ 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") )