pythonとopenccvを使って顔認識をし、認識した顔の中で最も大きい面積の顔にのみ四角の枠で囲むシステムを作りたいです。
webカメラを使ったリアルタイムのシステムです。
現在は複数の顔がある場合はすべてに四角く枠が付く状態です。
どうやって最も大きい面積のxywhの値を抜き出せますか?
独学で最近勉強し始めたのでコードが汚かったり醜いなどあると思いますが、よろしくお願いします。
該当のソースコード
「Python」
import cv2 cap = cv2.VideoCapture(0) cascade_file = 'C:/Users/username/Anaconda3/Lib/site-packages\cv2\data\haarcascade_frontalface_default.xml' cascade = cv2.CascadeClassifier(cascade_file) while cap.isOpened(): ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) face = cascade.detectMultiScale(gray, scaleFactor=1.05, minNeighbors=2, minSize=(100, 100) ) if len(face) == 0: pass else : for x, y, w, h in face: color = ( 0, 0, 110 ) cv2.rectangle( frame, (x, y), (x+w, y+h), color, 2 ) cv2.imshow( 'frame1', frame ) key = cv2.waitKey(1) if key == ord('q'): break cv2.destroyAllWindows() cap.release()
回答1件
あなたの回答
tips
プレビュー