前提・実現したいこと
USB CAM からの動画をキャプチャーし、顔認識し、四角い枠で囲みたいです。
発生している問題・エラーメッセージ
下記コードで、facerectの値をprintすると「 () 」ばかりで、その下のIfで弾かれます。
参考にしたコードでは、cascade_pathが、"User/username/-----"でしたが、
raspberrypiの場合、directoryが違ってたので、探して見つけて、正しい場所を指すようにしました。
これでPathは通ってると思いすますが、ソースコードを置いてる場所が、piの下にsrcというdirectory作って、そこにあるため、念のため、コードのように相対パスで書きました。
※どちらにしても、結果は同じです。
読んでも意味がわからないのですが、cascadeの値をPrintしたら、
<CascadeCassifier 0x75xxxxx>
と、何らか入ってました。
cascade.detectMultiScale
の引数も色々いじってみましたが、まったく変わらず、です。
蛇足ですが、
cv2.imshow('fram', frame)
cv2.waitKey(20)
は、うまく動いており、WebCamからの画像は(かなりスムーズに)映ります。
エラーメッセージ
ありません。
該当のソースコード
Python
1import numpy as np 2import cv2 3 4cap = cv2.VideoCapture(0) 5cap.set(3,320) 6cap.set(4,240) 7 8cascade_path = "/../../../user/share/opencv/haarcascades/haarcascade_frontalface_alt.xml" 9cascade = cv2.CascadeClassifier(cascade_path) 10color = (0,0,255) 11 12print cascade #test 13cnt = 0 14while(cap.isOpened()): 15 ret, frame = cap.read() 16 if ret == False: 17 break 18 else: 19 if (cnt % 10) == 0: 20 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 21 facerect = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1)) 22 23 cnt += 1 24 25 if len(facerect) > 0: 26 for (x,y,w,h) in facerect: 27 cv2.rectangle(frame, (x,y),(x+w,y+h), color, 5) 28 29 print 'a' 30 31 cv2.imshow('fram', frame) 32 cv2.waitKey(20) 33 34cap.release() 35cv2.dstroyAllWindows()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/06 07:37
2017/03/06 10:03