TensorFlowを使った「似ている顔判定プログラム」を作成したのですが、訓練データの写真のトリミングが必要だったのでOpenCVで作成しました。
Macでは正しく動作するのですが、Windowsだとうまく動作しません。
保存ディレクトリの作成まではできるのですが、認識した顔部分の座標が表示されず()
のみ連続して表示されます。
原因は何でしょうか?
py
1#OpenCVのインポート 2import cv2 3import os 4 5#カスケード型分類器に使用する分類器のデータ(xmlファイル)を読み込み 6HAAR_FILE = './haarcascade_frontalface_default.xml' 7cascade = cv2.CascadeClassifier(HAAR_FILE) 8 9#画像ファイルの読み込み 10for dir in os.listdir('./data/training/'): 11 if dir == '.DS_Store': 12 continue 13 14 i=1 15 16 dir1 = "./data/training/"+dir 17 18 os.mkdir(dir+'_face_cut') 19 20 for file in os.listdir(dir1): 21 if file != '.DS_Store': 22 23 image_picture = dir1 + '/' + file 24 25 img = cv2.imread(image_picture) 26 27 #グレースケールに変換する 28 img_g = cv2.imread(image_picture,0) 29 30 #カスケード型分類器を使用して画像ファイルから顔部分を検出する 31 face = cascade.detectMultiScale(img_g) 32 33 #顔の座標を表示する 34 print(face) 35 36 #顔部分を切り取る 37 for x,y,w,h in face: 38 face_cut = img[y:y+h, x:x+w] 39 40 #白枠で顔を囲む 41 for x,y,w,h in face: 42 cv2.rectangle(img,(x,y),(x+w,y+h),(255,255,255),2) 43 44 #画像の出力 45 46 cv2.imwrite(os.path.join(dir+'_face_cut',dir+'face_rectangle'+str(i)+'.jpg'), face_cut) 47 i+=1 48
あなたの回答
tips
プレビュー