Python
1import cv2 2 3if __name__ == '__main__': 4 # 定数定義 5 ESC_KEY = 1 # Escキー 6 INTERVAL= 2 # 待ち時間 7 FRAME_RATE = 3 # fps 8 #ウィンドウ名の定義 9 Color_Window = "Color_Face" 10 Gray_Window = "Gray_Face" 11 #カメラから検出をするならしたのを入れる 12 #DEVICE_ID = 0 13 14 # 分類器の指定 15 cascade_file = "/Users/student/Opencv-4.3.0/opencv-4.3.0/data/haarcascades/haarcascade_frontalface_alt.xml" 16 cascade = cv2.CascadeClassifier(cascade_file) 17 18 # 動画取得 19 #カメラから検出するなら()内をDEVICE_IDにする 20 cap = cv2.VideoCapture("/Users/student/Downloads/Face3.mp4") 21 22 # 初期フレームの読込 23 end_flag, c_frame = cap.read() 24 #フレームの高さ、広さ、チャンネル数 25 height, width, channels = c_frame.shape 26 27 # ウィンドウの準備 28 cv2.namedWindow(Color_Window) 29 cv2.namedWindow(Gray_Window) 30 31 # 連番の生成 32 n = 0 33 i = 0 34 35 # 変換処理ループ 36 while end_flag == True: 37 # 画像の取得と顔の検出 38 img = c_frame 39 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 40 face_list = cascade.detectMultiScale(img_gray, minSize=(100, 100)) 41 42 # 検出した顔に印を付ける 43 for (x, y, w, h) in face_list: 44 color = (0, 0, 225) 45 pen_w = 3 46 cv2.rectangle(img_gray, (x, y), (x+w, y+h), color, thickness = pen_w) 47 48 # フレーム表示 49 cv2.imshow(Color_Window, c_frame) 50 cv2.imshow(Gray_Window, img_gray) 51 52 # 顔が検出されたらjpgファイルを生成する 53 #cv2.imwriteで保存 54 #formatでファイル名を手動で書き換え 55 if type(face_list) is not tuple : 56 cv2.imwrite('{}_{}.{}'.format('/Users/student/Opencv-4.3.0/Face detection/', n+1, 'jpg'), c_frame) 57 58#下のprintのバウンディングボックスの座標データをtxtに出力したいです 59print('No.',n+1,face_list[0,0],face_list[0,1],face_list[0,2],face_list[0,3]) 60 61 n += 1 62 63 64 # Escキーで終了 65 key = cv2.waitKey(INTERVAL) 66 if key == ESC_KEY: 67 break 68 69 # 次のフレーム読み込み 70 end_flag, c_frame = cap.read() 71 72 # 終了処理 73 cv2.destroyAllWindows() 74 cap.release()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。