python
1//webカメラを使い、顔認識をして、顔を白枠で囲みたいです。 2 3import cv2 4import threading 5from datetime import datetime 6import numpy as np 7 8class FaceThread(threading.Thread): 9 def __init__(self, frame): 10 super(FaceThread, self).__init__() 11 self._cascade_path = r"C:\Users\saito\PycharmProjects\kenkyu\venv\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml" 12 self._frame = frame 13 14 def run(self): 15 16 self._frame_gray = cv2.cvtColor(self._frame, cv2.COLOR_BGR2GRAY) 17 18 19 self._cascade = cv2.CascadeClassifier(self._cascade_path) 20 21 22 self._facerect = self._cascade.detectMultiScale(self._frame_gray, scaleFactor=1, minNeighbors=2, minSize=(10, 10)) 23 24 25 if len(self._facerect) > 0: 26 print ('顔が検出されました。') 27 self._color = (255, 255, 255) #白 28 for self._rect in self._facerect: 29 30 cv2.rectangle(self._frame, tuple(self._rect[0:2]),tuple(self._rect[0:2] + self._rect[2:4]), self._color, thickness=2) 31 32 33 self._now = datetime.now().strftime('%Y%m%d%H%M%S') 34 35 self._image_path = self._now + '.jpg' 36 cv2.imwrite(self._image_path, self._frame) 37 38 39cap = cv2.VideoCapture(0) 40 41while True: 42 ret, frame = cap.read() 43 44 45 cv2.imshow('camera capture', frame) 46 47 if(threading.activeCount() == 1): 48 th = FaceThread(frame) 49 th.start() 50 51 52 k = cv2.waitKey(10) 53 54 if k == 27: 55 break 56 57cap.release() 58cv2.destroyAllWindows() 59```### opencv を利用した顔認証 60opencvとpythonを中心に使います。 61webカメラを使い、顔認識をして、顔を白枠で囲みたいです。 62webカメラは起動しているのですが、白枠で囲ってくれません。 63また、繰り返しエラーメッセージが出ている状態です。 64めっちゃ初心者なので、すごく簡単に説明していただけると嬉しいです。 65どうか、よろしくお願います。 66 67### 発生している問題・エラーメッセージ 68
File "C:/Users/saito/PycharmProjects/卒業研究/rensyuuuuuu.py", line 20, in run
self._facerect = self._cascade.detectMultiScale(self._frame_gray, scaleFactor=1, minNeighbors=2, minSize=(10, 10))
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'
回答3件
あなたの回答
tips
プレビュー