2016-07-26 4 views
0

OpenCVの下でPythonで「顔/顔の存在」を検出するために、次のコードを書いています。私は、次のエラーが表示さOpenCVを使ったPythonのFaceDetection

import cv2 
import sys 

faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 

cv2.namedWindow("preview") 
vc = cv2.VideoCapture(0) 


if vc.isOpened(): # try to get the first frame 
    rval, frame = vc.read() 
else: 
    rval = False 

while rval: 
    rval, frame = vc.read() 

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    faces = faceCascade.detectMultiScale(gray, 1.3, 5) 
    for (x,y,w,h) in faces: 
     frame = cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2) 

    # Display the resulting frame 
    cv2.imshow('Preview', frame) 

    key = cv2.waitKey(20) 
    if key == 27: # exit on ESC 
     break 

cv2.destroyWindow("preview") 
cv2.destroyAllWindows() 

:結果

/usr/bin/python3.4 /home/yas/PycharmProjects/Ch10_OpenCV/Example.py 
    init done 
    opengl support available 
    OpenCV Error: Assertion failed (!empty()) in detectMultiScale, file /home/yas/opencv-3.0.0/modules/objdetect/src/cascadedetect.cpp, line 1634 
    Traceback (most recent call last): 
    File "/home/yas/PycharmProjects/Ch10_OpenCV/Example.py", line 32, in <module> 
    faces = faceCascade.detectMultiScale(gray, 1.3, 5) 
    cv2.error: /home/yas/opencv- 3.0.0/modules/objdetect/src/cascadedetect.cpp:1634: error: (-215) !empty() in function detectMultiScale 


    Process finished with exit code 1 

を、ウェブカメラウィンドウが開き、顔が検出されないことを確認のためにしません。私はLinux-Ubtunuの下で働いていて、Pythonインタープリタ3.4.3で作業しています。

このエラーは何を意味しますか?どのように解決することができますか?あなたの意見をお寄せいただきありがとう

+1

' 'haarcascade_frontalface_default.xml''ファイルが見つからない、完全修飾パスに – ZdaR

+0

感謝を提供することがある:それはのようなものがあることでしょう。問題はあなたが言及したとおりでした!私は手動でhttps://raw.githubusercontent.com/shantnu/Webcam-Face-Detect/master/haarcascade_frontalface_default.xmlからXMLファイルをダウンロードし、それを現在の作業ディレクトリに追加しました。 プログラムが顔を非常によく検出します。しかし、このXMLファイルがPythonのデフォルトディストリビューションの1つであることを検証できますか?確認したら、私はこれを確認することができませんでした。 – YAS

+1

疑問がある場合は、https://github.com/opencv/opencv/tree/master/data/haarcascadesからカスケードファイルをダウンロードできます。 – ZdaR

答えて

0

最後の2行の直前にvc.release()を追加する必要があります。

vc.release() 
cv2.destroyWindow("preview") 
cv2.destroyAllWindows() 
関連する問題