如何解决OpenCV 面部检测出现此错误
我不断收到此错误:
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,5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,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()
我在 [this[(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")
见:
error: (-215) !empty() in function detectMultiScale
,我相信这是由于缺少 .xml 文件造成的。你能检查一下你的 .xml 文件的路径是否正确吗?
或者你从别处开始这个程序?因为路径将从您运行程序的位置开始。
例如,即使您的 python 文件与 .xml 文件位于同一目录中。如果您从 python folder/app.py
等其他目录运行 python,它将抛出错误。您必须将 xml 路径更改为“文件夹/模型.xml”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。