Opencvとdlibを用いて口を検出し、切り出し保存するコードなのですが
File "1122.py", line 56, in <module> main() File "1122.py", line 38, in main frame, roi = face_shape_detector_dlib(frame) File "1122.py", line 10, in face_shape_detector_dlib dets, scores, idx = detector.run(img_rgb, 0) NameError: name 'detector' is not defined
とエラーが出てしまいます。
以下コードになります。コンパイルできるようにしたいです。
よろしくお願いいたします。
python
1import cv2 2import dlib 3import numpy as np 4import imutils 5from imutils import face_utils 6 7def face_shape_detector_dlib(img): 8 img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 9 # frontal_face_detectorクラスは矩形, スコア, サブ検出器の結果を返す 10 dets, scores, idx = detector.run(img_rgb, 0) 11 if len(dets) > 0: 12 for i, rect in enumerate(dets): 13 shape = predictor(img_rgb, rect) 14 shape = face_utils.shape_to_np(shape) 15 clone = img.copy() 16 cv2.putText(clone, "mouth", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) 17 # landmarkを画像に書き込む 18 for (x, y) in shape[48:68]: 19 cv2.circle(clone, (x, y), 1, (0, 0, 255), -1) 20 # shapeで指定した個所の切り取り画像(ROI)を取得 21 (x, y, w, h) = cv2.boundingRect(np.array([shape[48:68]])) #口の部位のみ切り出し 22 roi = img[y:y + h, x:x + w] 23 roi = cv2.resize(roi,(100,100)) 24 return clone, roi 25 else : 26 return img, None 27 28def main(): 29 predictor_path = "./shape_predictor_68_face_landmarks.dat" 30 predictor = dlib.shape_predictor(predictor_path) 31 detector = dlib.get_frontal_face_detector() 32 cap = cv2.VideoCapture(0) 33 count = 0 34 35 while True: 36 ret, frame = cap.read() 37 frame = imutils.resize(frame, width=500) 38 frame, roi = face_shape_detector_dlib(frame) 39 cv2.imshow('img', frame) 40 if roi is not None : 41 cv2.imshow('roi', roi) 42 else : 43 cv2.destroyWindow('roi') 44 c = cv2.waitKey(1) 45 if c == 27:#ESCを押してウィンドウを閉じる 46 break 47 if c == 32:#spaceで保存 48 count += 1 49 cv2.imwrite('./filename%03.f'%(count)+'.jpg', roi) #001~連番で保存 50 print('save done') 51 cap.release() 52 cv2.destroyAllWindows() 53 54if __name__ == '__main__': 55 56 main() 57
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/25 16:10
2019/11/25 16:17
2019/11/25 16:40
2019/11/25 16:52 編集
2019/11/25 16:54