キンサクプログラマー

お金儲けと技術のメモ

PythonのOpenCVで顔検出

顔認識ができない。
anacondaインストー
pythonインストールを行った後に、以下を実行すると・・・

import os
import cv2
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline

def facedetect(file):
    face_cascade = cv2.CascadeClassifier('cascadeファイルのパス/haarcascade_frontalface_default.xml')
    img = cv2.imread(file)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x,y), (x+w, y+h), (255,0,0), 2)
    plt.imshow( cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    plt.show()

if __name__ == '__main__':
    lenna = "ri947_a.jpg"
    if os.path.exists(lenna):
        facedetect(lenna)

これが出る・・・・

error: /Users/travis/build/skvark/opencv-python/opencv/modules/objdetect/src/cascadedetect.cpp:1681: error: (-215) !empty() in function detectMultiScale

ぐぐってみると、ちらほら同じ問題を見かけるが、パスがおかしいくらいの指摘しかない。
パスは合っている・・・と思いきや、スペースが頭に入ってた。 アホすぎる。
できた。わーい。
f:id:pikurusux:20170614232021p:plain

ちなみに、
detectMultiScale(gray, 1.3, 5)の第三引数minNeighborsは変えないと、小さい顔画像を検出してくれません。