首页 > 解决方案 > 遇到错误:函数“cvtColor”中的 OpenCV !_src.empty() 错误

问题描述

Traceback (most recent call last):
  File ".\faces-test.py", line 20, in <module>
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-10658tfl\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

我无法解决上述错误。下面的代码用于从我保存到本地的视频中捕获帧,并用作 VideoCapture() 函数的参数。但是当我运行下面的代码时,我遇到了上面的错误

import numpy as numpy
import cv2
import pickle

face_cascade = cv2.CascadeClassifier('cascades/data/haarcascade_frontalface_alt2.xml')
eye_cascade = cv2.CascadeClassifier('cascades/data/haarcascade_eye.xml')
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read("trainner.yml")

labels = {"person_name": 1}
with open("labels.pickle", 'rb') as f:
    og_labels = pickle.load(f)
    labels = {v: k for k, v in og_labels.items()}

cap = cv2.VideoCapture('C:\\My_Studies\\Python\\testing\\images\\mygeneratedvideo.avi')

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

标签: opencv-python

解决方案


删除所有其他代码并尝试阅读和显示视频。完成此工作后,请担心其余代码。确保您在指定文件夹中有文件并且名称匹配。然后试试这个:

import cv2

cap = cv2.VideoCapture('C:/My_Studies/Python/testing/images/mygeneratedvideo.avi')

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()
    if ret:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        cv2.imshow("Output", gray)
    else:
        break
    key = cv2.waitKey(1) & 0xFF
    # if the `q` key was pressed, break from the loop
    if key == ord("q"):
        break
cap.release()
cv2.destroyAllWindows()

 

推荐阅读