【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】API を使って Amazon の商品情報を収集する方法。
AmazonAPI ライブラリをインストール 以下のコマンドで python-amazon-sim
-
【Python】pip3 で「cannot import name ‘main’」エラーが出たときの対処法。
Python でライブラリをインストールする際に、pipを使います。 Python2 と Py
-
【Atomエディタ】Python 開発用にインストールしてみた。
Python でプログラミングするときの エディタ を探していたのですが、とりあえず Atom とい
-
【Python】Wikipedia のデータセットを取得し、文章を抽出する方法。
Wikipedia のデータセットを取得し、Python のライブラリを用いて文章を抽出する方法を紹
-
【Python】プログレスバーを表示させる【tqdm】
Python でスクリプトの実行時間が長くなると、進捗状況が知りたくなったので、標準出力にどのくらい
-
【Spyder】引数のあるスクリプトを実行する方法。
Python の統合開発環境(IDE)である Spyder では、簡単にスクリプトを実行できます。
-
【Linux】 ローカルに Python をインストールする方法。
今回は、Linux サーバに、root 権限なしで、ローカルに Python をインストールした方法
-
【Pandas】 DataFrame の行を抽出する方法【Python】
今回は、Python の Pandas で、DataFrame 型の行を抽出する方法を紹介します。
-
【Python】 複数の辞書型の同じ key を持つ value を計算に用いる方法。
Python で、複数の辞書型を読み込んで、同じキー(key)を持つ数値(value)を計算に使う方
-
【Python】 DataFrame の特定の列で出現回数をカウントして降順でソートする方法。
Python で DataFrame 型の特定の列を指定して、対象列の文字列の出現回数をカウントして