OpenCV 面部检测出现此错误

问题描述 投票:0回答:2

我不断收到此错误:

faces = face_cascade.detectMultiScale(gray, 1.3, 5)
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wvn_it83\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'

尝试运行此代码时

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier('haarcascase_frontalface_default.xml')

cap = cv2.VideoCapture(0)

while 1:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x,y,w,h) in faces:
        cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]

    cv2.imshow('img', img)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()

我在[这个[(https://www.youtube.com/watch?v=88HdqNDQsEk&t=432s) YouTube 视频中找到了代码。

python opencv detection face-detection haar-classifier
2个回答
1
投票

也许

haarcascase_frontalface_default.xml
文件丢失或者必须以其他方式指定路径。

https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml

https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml

.xml 可以位于脚本的目录中并从中调用它,或者您可以指定绝对路径。

两者都在我的测试运行中工作,即使用绝对路径:

face_cascade = cv2.CascadeClassifier(r"Z:\py\haarcascade_frontalface_default.xml")

参见:

错误:(-215) !empty() 函数中的 detectorMultiScale


0
投票

我相信这是由于缺少 .xml 文件造成的。你能检查一下你的.xml文件的路径是否正确吗?

或者您是从其他地方启动这个程序的吗?因为路径将从运行程序的位置开始。

例如,即使您的 python 文件与 .xml 文件位于同一目录中。如果你从其他目录运行 python,比如

python folder/app.py
它会抛出错误。您必须将 xml 路径更改为“folder/model.xml”。

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