繁体   English   中英

错误:OpenCV(4.5.5) 错误:(-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'

[英]error: OpenCV(4.5.5) error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'

我正在尝试在 anaconda 的 spyder 上使用 python 制作一个微笑检测器。 该程序向我抛出了一个我作为 python 初学者无法理解的错误。 这是错误:

错误:OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: 错误: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'

这是代码:

import random , cv2,time
face_cascade=cv2.CascadeClassifier("haarscascade_frontalface_default.xml")
smile_cascade=cv2.CascadeClassifier("smile.xml")
video = cv2.VideoCapture(0)
num=0
def smile_meter(frame,x1,y1):
    global num
    if num>4000:
        x=str(random.randint(0, 100))
        font=cv2.FONT_HERSHEY_SIMPLEX
        color=(255,0,255)
        text=cv2.putText(frame,"your smile is",(int(x1)+15,int(y1)-70),font,1,color,4,cv2.LINE_AA)
        text=cv2.putText(frame,x+"%",(int(x1)+50,int(y1)-20),font,1,color,4,cv2.LINE_AA)
        time.sleep(15)
        num=0
        return num
    else:
        x=str(random.randint(0, 100))
        font=cv2.FONT_HERSHEY_SIMPLEX
        color=(255,0,255)
        text=cv2.putText(frame,"Smile Meter",(int(x1)+15,int(y1)-70),font,1,color,4,cv2.LINE_AA)
        text=cv2.putText(frame,x+"%",(int(x1)+50,int(y1)-20),font,1,color,4,cv2.LINE_AA)
        num=num+5
        return num
while True:
    check,frame=video.read()
    gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    face=face_cascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5)
    for x,y,w,h in face:
        img=cv2.rectangle(frame,(x,y),(x+(w+20),y+(h-300)),(0,0,255),-1)
        smile=smile_cascade.detectMultiScale(gray,scaleFactor=1.8,minNeighbors=20)
        for x1,y1,w1,h1 in smile:
            img=cv2.rectangle(frame,(x1,y1),(x1+(w1),y1+(h1)),(255,0,0),3)
            smile_meter(frame,x,y)
    cv2.imshow("smile meter",frame)
    key=cv2.waitKey(1)
    if key==ord('q'):
        break
video.release()
cv2.destroyAllWindows

您没有正确拼写 frontal_face_cascade。 你把:

face_cascade=cv2.CascadeClassifier("haarscascade_frontalface_default.xml")

什么时候应该:

face_cascade=cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

拼写错误可能会让您感到困惑,因此请务必仔细检查最初的一切是否正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM