LoginSignup
1
0

More than 3 years have passed since last update.

写真からOpenCVを用いて顔部分を切り出す。

Posted at

参考サイト

opencv公式
参考サイト

まずcascadeファイルを得る

opencv公式の一番上のRereasesに入って、一番上のOpenCV –〜.〜.〜みたいな奴のSoursesをクリックしてzipファイルをお好きなフォルダにダウンロードし(少し時間がかかります。)展開してください。
沢山ファイルが入っていますが使うのは、dataフォルダのhaarcascadesの中のhaarcascade_frontalface_default.xmlというファイルだけです。
そのファイルの場所は把握しておき、""cascade_file = ""のところで定義しましょう。

私は、
000001.jpg(試したい画像ファイル)とcvcut.py(以下のコード)とmodelsフォルダを同一の階層におき、modelsの中にhaarcascade_frontalface_default.xmlファイルを置く、という構造にしました。

顔の切り出し+顔部分を枠で囲むコード

cvcut.py

import cv2
cascade_file = "./models/haarcascade_frontalface_default.xml"
cascade = cv2.CascadeClassifier(cascade_file)
#画像ファイルの読み込み
image_picture = "画像ファイルの名前"
img = cv2.imread(image_picture)


#グレースケールに変換する
img_g = cv2.imread(image_picture,0)

#顔部分の検出
face = cascade.detectMultiScale(img_g)

#顔の座標を表示する
print(face)

#切り取る
for x,y,w,h in face:
    face_cut = img[y:y+h, x:x+w]

#白枠で囲む
for x,y,w,h in face:
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,255,255),2)

#画像の出力
cv2.imwrite('face_cut.jpg',face_cut) #切り取った写真(この場合はface_cut.jpgとして出力される)
cv2.imwrite('face_white.jpg', img)#顔部分が白枠で囲まれた写真(この場合はface_rectangle.jpgとして出力される)

cvcut.pyがある階層において、

python cvcut.py

を実行する。
すると新しくface_cut.jpgと、face_white.jpgができているのがわかるだろう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0