【OpenCV】検出した顔画像部分を切り出す方法【Python】
OpenCV を使って、Python で画像の中から顔部分を切り出したときのメモです。
顔部分の検出については、以前に記事にまとめたので、よかったら参考にしてください。
【OpenCV】画像の顔部分を検出する方法【Python】
今回は、検出した顔部分を切り取って、保存します。
用いた画像は、前回同様「Lenna」を使っています。
OpenCV での画像の x座標, y座標の表し方を簡単にまとめます。
画像の左上の頂点座標を(0, 0)とし、横(右)にいくほど x座標の値が大きくなり、縦(下)にいくほど y座標の値が大きくなります。
座標値は全て正の値となります。
出典:https://qiita.com/sino20023/items/ec7e0ac77547f3b6484b
画像の切り出す範囲は、img[]メソッドを使って、x軸とy軸それぞれ指定します。
「:」は範囲を指定する「~」に置き換えると意味が分かりやすくなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import cv2 # カスケード分類器の読み込み face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # イメージファイルの読み込み img = cv2.imread('lena_std.tif') # 顔を検知 face = face_cascade.detectMultiScale(img) # [[217 201 173 173]] print(face) # 検出した顔部分を切り出す for(x, y, w, h) in face: trim = img[y:y+h, # y軸の範囲 x:x+w] # x軸の範囲 # 切り取り処理後の画像を保存 cv2.imwrite('face_01.jpg', trim) # 検出処理後の画像を別ウィンドウで表示 cv2.imshow('face01', trim) # これがないと「応答なし」になってしまう cv2.waitKey(0) cv2.destroyAllWindows() |
実効結果は、以下のようになります。
関連記事
-
-
【Python】OpenCV を使って顔画像を検出してみた。
OpenCV のインストール Numpy のインストール [crayon-680153705
-
-
【Python】Beautiful Soup を使ってスクレイピングする方法。
Beautiful Soup は、シンプルでわかりやすい API でデータを抜き出せる Python
-
-
【OpenCV】画像の顔部分を検出する方法【Python】
OpenCV を使って、Python で画像から顔部分の検出を行ったときのメモです。 Anac
-
-
【Python】 DataFrame の特定の列で出現回数をカウントして降順でソートする方法。
Python で DataFrame 型の特定の列を指定して、対象列の文字列の出現回数をカウントして
-
-
【Python】機械学習のために SciPy・Matplotlib・scikit-learn をインストール。
Python で機械学習を行うために、Windows OS の python 2 系にライブラリ「S
-
-
【Python】 Series 型を dict(辞書型)に変換する方法。
Python で Series 型を dict(辞書型)に簡単に変換する方法を紹介します。 「
-
-
【Python】漢字を分解するライブラリを使ってみた【部首分解】
Python で漢字を部首やさらに細かい部分に分解してくれるライブラリがあったので使ってみました。
-
-
【Pandas】 loc・ilocで1行のみ Series ではなく DataFrame で抽出する方法。
Python の Pandas で DataFrame から loc や iloc を使って行を抽出
-
-
【Atom エディタ】Python で Matplotlib のグラフを Atom 上に表示させる方法。
Atom エディタで Python の Matplotlib ライブラリを使って、Atom 上にグラ
-
-
【Python】Requests ライブラリを使って Web ページを取得してみた。
python の標準ライブラリ urllib を使っても Web ページの取得はできるのですが、Re