我已经浏览了很多遍,但是在OpenCV中使用detectMultiScale仍然遇到相同的错误

问题描述 投票:0回答:1
Traceback (most recent call last):
  File "/Users/jadalada/Documents/GitHub/allTests/OpenCV (Py)/VCV.py", line 14, in <module>
    faces = faceCascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)
cv2.error: OpenCV(4.1.0) /Users/travis/build/skvark/opencv-python/opencv/modules/objdetect/src/cascadedetect.cpp:1658: error: (-215:Assertion failed) !empty() in function
import numpy as np
import cv2 as cv

faceCascade = cv.CascadeClassifier('Casscades/haarcascade_frontalface_default.xml')
eyeCascade = cv.CascadeClassifier('Casscades/haarcascade_eye.xml')
smileCascade = cv.CascadeClassifier('Casscades/haarcascade_smile.xml')

cap = cv.VideoCapture(0)

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

    faces = faceCascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)
    eyes = eyeCascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)
    smile = smileCascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)

我不确定为什么会发生这种情况,因为另一个完全相同的python文件对于完全相同的完全相同的EXACT代码也是如此。

import numpy as np
import cv2 as cv

faceCascade = cv.CascadeClassifier('Casscades/haarcascade_frontalface_default.xml')
eyeCascade = cv.CascadeClassifier('Casscades/haarcascade_eye.xml')
smileCascade = cv.CascadeClassifier('Casscades/haarcascade_smile.xml')

cap = cv.VideoCapture(0)

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

    faces = faceCascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)
    eyes = eyeCascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)
    smile = smileCascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)

这是另一个文件中完全相同的代码,可以完美运行且没有错误。

python opencv
1个回答
0
投票

错误很可能表示您的CascadeClassifier没有正确实例化。使用:

faces.empty()

检查分类器是否正确实例化。如果返回true,则1-您的xml文件路径错误。2-您的xml文件不正确3-由于某种原因无法加载xml文件?

如果您确定文件和路径正确,请尝试重新加载:

faces.load('PATH_TO_XML')
© www.soinside.com 2019 - 2024. All rights reserved.