前回記事では単一の画像で顔の切り出しを行なったが、より使いやすくするためにフォルダ内の複数画像で顔の切り出しを行う場合でも使えるようにする
multiface_cut.pyとinput(処理したい画像が入ったフォルダ)とoutputs(処理後の画像を入れたいフォルダ)を同じ階層に配置してある。
複数の画像が入ったフォルダから画像を取り出して処理し、特定のフォルダに保存するコード
multiface_cut.py
import cv2
import glob
HAAR_FILE = "./models/haarcascade_frontalface_default.xml"
cascade = cv2.CascadeClassifier(HAAR_FILE)
files = glob.glob(os.path.join("./input/*.jpg"))
files = [s.replace('./input/', '') for s in files]
for file_name in files:
img = cv2.imread('input/'+file_name)
img_g = cv2.imread('input/'+file_name,0)
face = cascade.detectMultiScale(img_g)
for x,y,w,h in face:
face_cut = img[y:y + h, x:x + w]
cv2.imwrite("./outputs/"+file_name, face_cut)