首页 > 解决方案 > 错误:函数 'detectMultiScale' 中的 !empty()

问题描述

我有以下小代码:

from google.colab import drive
from IPython.display import display
import PIL
from PIL import Image, ImageDraw
import kraken
from kraken import pageseg
import cv2 as cv

img = Image.open("/content/drive/My Drive/images/dropfire.jpg")

face_cascade = cv.CascadeClassifier(cv.data.haarcascades + "/content/drive/My Drive/datas/haarcascade_frontalface_default.xml")
eye_cascade = cv.CascadeClassifier(cv.data.haarcascades + "/content/drive/My Drive/datas/haarcascade_eye.xml")

file_name = "/content/drive/My Drive/images/dropfire.jpg"
img = cv.imread(file_name)
pil_img = Image.open(file_name)
cv_img = pil_img.convert('L')
cv_img = cv.imread(file_name)

faces = face_cascade.detectMultiScale(cv_img)

当我运行最后一个单元格(带有faces)时,它会引发:

error                                     Traceback (most recent call last)
<ipython-input-23-2bd7582f8a20> in <module>()
----> 1 faces = face_cascade.detectMultiScale(cv_img)

error: OpenCV(4.1.2) /io/opencv/modules/objdetect/src/cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'

直到这个单元格一切正常。根据 Stack Overflow 的回答,我cv.data.haarcascades + 在括号中添加了cv.CascadeClassifier. 尽管人们说这对他们有用,但不知何故对我不起作用。

标签: pythonopencvpython-imaging-librarycv2

解决方案


问题是检查XML是否加载,用于 eye_cascade.empty()检查它是否加载。


推荐阅读