导致openCV断言失败的错误的原因?

问题描述 投票:-1回答:1

我在IDLE python(3.7)上调试时遇到的错误是:

  cv2.error: OpenCV(3.4.3) (some directory files)
- error : (-215:Assertion failed) !_src.empty() in function 'cvtColor'

程序本身来自网站:

import cv2

import numpy as np

face_cascade = cv2.CascadeClassifier('C:\Program Files\Python38\Lib\site-packages\cv2\data\haarcascade_frontalface_alt2.xml')

cap = cv2.VideoCapture(0)

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

    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)

    for (x, y, w, h) in faces:
        print(x,y,w,h)
        roi_gray = gray[y:y + h, x:x + w]  # (ycord_start, ycord_end)
        roi_color = frame[y:y + h, x:x + w]
        img_item = 'my-image.png'
        cv2.imwrite(img_item,roi_gray)
        cv2.imshow('frame',frame)
        color = (0,0,255)
        stroke = 2
        width = x + w
        height = y + h
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
    if cv2.waitKey(20) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

所以我想知道是什么导致了此错误。

python opencv face-detection
1个回答
0
投票

问题出在

cap = cv2.VideoCapture(0)

实际上0是打开的视频捕获设备的ID(即摄像机索引)。我认为该程序无法检测到任何相机,因此会引发此错误。您可以通过在循环之前打印cap.isOpened()来检查视频捕获是否已经初始化,如果为false,则初始化视频捕获时会遇到问题。

问候

© www.soinside.com 2019 - 2024. All rights reserved.