如何解决错误:函数“ 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'
直到该单元格一切正常。根据StackOverflow answer,我在cv.data.haarcascades +
的括号中添加了cv.CascadeClassifier
。尽管人们说这对他们有用,但对我而言却不...
感谢您的帮助。
解决方法
恕我直言,您的“小代码”已经有太多的噪音(不必要的代码行)。 我认为这使您更加难以理解正在发生的事情。
注释/删除除以下以外的所有行:
import cv2 as cv
face_cascade = cv.CascadeClassifier(cv.data.haarcascades + "haarcascade_frontalface_default.xml")
eye_cascade = cv.CascadeClassifier(cv.data.haarcascades + "haarcascade_eye.xml")
file_name = "/content/drive/My Drive/images/dropfire.jpg"
img = cv.imread(file_name) # this reads the image already
cv_img = cv.imread(file_name) # this reads same image once more,not sure if intended
faces = face_cascade.detectMultiScale(cv_img)
如果图像“ dropfire”确实存在于该路径上,则该操作应该没有错误,但是不会显示任何面部检测结果。您可以在最后添加这些行以查看结果:
for (x,y,w,h) in faces:
cv.rectangle(cv_img,(x,y),(x+w,y+h),(0,255),3)
cv.imshow("Nice face",cv_img)
cv.waitKey(0)
cv.data.haarcascades已经具有所有这些cv2 xml文件的路径,因此您只需要使用文件名。
,问题是检查是否已加载XML,请使用
eye_cascade.empty()
检查是否已加载。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。