我是靠谱客的博主 魁梧大树,最近开发中收集的这篇文章主要介绍Python+OpenCV3人脸检测出现错误代码:error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、环境:

Windows10

Python 3.6.4

OpenCV 3.4.1(安装方式为:pip install    opencv_python‑3.4.1‑cp36‑cp36m‑win32.whl )

cascades(人脸识别haar特征级联分类器)文件夹内容下载地址:

https://github.com/opencv/opencv/tree/master/data/haarcascades

注意:最终发现此下载方法文件出现问题

二、报错代码

import cv2

filename='face.jpg'

def detect(filename):

face_cascade = cv2.CascadeClassifier('./cascades/

                        haarcascade_frontalface_default.xml')

img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray,1.3,5)
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.namedWindow("vikings detected")
cv2.imshow("/vikings detected",img)
cv2.waitKey(0)

detect(filename)


运行代码出现错误代码:cv2.error: OpenCV(3.4.1) D:BuildOpenCVopencv-3.4.1modulesobjdetectsrccasc

adedetect.cpp:1698: error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale

措施:

1、按照网上查询的资料,大部分的问题是设置分类器xxxx.xml绝对路径,可依据各种方法设置在运行代码时,同样出现以上错误代码;

2、依据另一份网络参考在

face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')后追加,

face_cascade.load('D:/opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')方法,依然无用;

3、另一种方法为:重新卸载Python及OpenCV,重装anaconda及OpenCV,尝试后依然无效;

最终方案:

(一)

1、下载opencv-3.4.1-vc14_vc15.exe,将文件放入C:UsersJohnAppDataLocalProgramsPythonPython36-32Libsite-packages文件目录,点击执行文件,生成OpenCV文件夹,内含文件夹‘sourcesdatahaarcascades’内包含所有分类器文件xxxx.xml;

2、依据错误代码提示,在本地建立错误代码指出的指定路径:D:BuildOpenCVopencv-3.4.1modulesobjdetectsrccascadedetect,将文件夹路径C:UsersJohnAppDataLocalProgramsPythonPython36-32Libsite-packagesopencvsourcesdatahaarcascades中分类器文件复制粘贴到本地建立的指定路径中;

3、修改源代码路径:

修改代码如下:

import cv2
import numpy as np


filename='face.jpg'
path='D:BuildOpenCVopencv-3.4.1modulesobjdetectsrccascadedetect'


def detect(filename):
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
face_cascade.load(path+'haarcascade_frontalface_default.xml')

img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray,1.3,5)
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.namedWindow("vikings detected")
cv2.imshow("vikings detected",img)
cv2.waitKey(0)

detect(filename)


再次运行,代码运行成功,可进行人脸识别!!!!如图所示:


(二)绝对路径中出现转义字符,在Python中,Windows环境反斜杠“",会将原始路径发生转义,如"n",如果在路径中出现"new",将无法读取路径,解决办法,绝对路径前加“r”,如:

r'D:python_workface_detectcascadeshaarcascade_frontalface_default.xml'


总结:

出现代码错误的原因可能是需要建立OpenCV库调用的指定路径;

绝对路径中出现转义字符“”,Python在调用路径时发生转义,无法得到完整路径,在绝对路径前加“r此方法为正确方法);


参考链接:

https://blog.csdn.net/serena9636/article/details/52530446

https://blog.csdn.net/m0_37908464/article/details/79433630


最后

以上就是魁梧大树为你收集整理的Python+OpenCV3人脸检测出现错误代码:error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale的全部内容,希望文章能够帮你解决Python+OpenCV3人脸检测出现错误代码:error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(156)

评论列表共有 0 条评论

立即
投稿
返回
顶部