[PYTHON] Solution cv :: CascadeClassifier :: detectMultiScale

introduction

Je vais présenter l'erreur qui s'est produite lors de la détection de visage avec OpenCV et la solution.

problème

J'ai eu une erreur avec le code suivant.

python


#Lecture du classificateur en cascade
cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

#Explorer la zone du visage
face = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(30, 30))

contenu de l'erreur

python


cv2.error: OpenCV(3.4.2) C:\projects\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1698: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'

Cause

Il semble que la spécification du chemin du fichier XML du classificateur soit incorrecte.

Solution

Tout d'abord, recherchez le chemin qui contient OpenCV.

python


user>python
Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 16:30:00) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>import cv2
>>>cv2.__file__

'C:\\Users\\user\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python37\\site-packages\\cv2\\cv2.cp37-win_amd64.pyd'

Recherchez ensuite l'emplacement du fichier XML. path.jpg

Dans mon cas, c'était dans / data.

Par conséquent, j'ai modifié le code comme suit.

python


#Lecture du classificateur en cascade
cascade = cv2.CascadeClassifier("C:/Users/user/AppData/Local/Packages/PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0/LocalCache/local-packages/Python37/site-packages/cv2/data/haarcascade_frontalface_default.xml")

#Explorer la zone du visage
face = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(30, 30))

en conclusion

result.jpg

J'ai pu le détecter en toute sécurité.

référence

https://qiita.com/K_M95/items/f1a3e7c47800adb94095

Recommended Posts

Solution cv :: CascadeClassifier :: detectMultiScale