我不断收到此错误:
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 视频中找到了代码。
也许
haarcascase_frontalface_default.xml
文件丢失或者必须以其他方式指定路径。
https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
.xml 可以位于脚本的目录中并从中调用它,或者您可以指定绝对路径。
两者都在我的测试运行中工作,即使用绝对路径:
face_cascade = cv2.CascadeClassifier(r"Z:\py\haarcascade_frontalface_default.xml")
参见:
我相信这是由于缺少 .xml 文件造成的。你能检查一下你的.xml文件的路径是否正确吗?
或者您是从其他地方启动这个程序的吗?因为路径将从运行程序的位置开始。
例如,即使您的 python 文件与 .xml 文件位于同一目录中。如果你从其他目录运行 python,比如
python folder/app.py
它会抛出错误。您必须将 xml 路径更改为“folder/model.xml”。