【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】 DataFrame の特定の列で出現回数をカウントして降順でソートする方法。
Python で DataFrame 型の特定の列を指定して、対象列の文字列の出現回数をカウントして
-
-
【Pandas】 DetaFrame の列ごとに演算する方法【Python】
今回は、DetaFrame の列ごとに平均や加算・減算なのど演算をし、結果を DetaFrame 型
-
-
【Pandas】 DataFrame で2行の列ごとの差を計算する方法【Python】
今回は、Pandas の DataFrame で、2行間の列ごとの値の差を計算し、その結果を Dat
-
-
【Python】OpenCV を使って顔画像を検出してみた。
OpenCV のインストール Numpy のインストール [crayon-656a1ab57
-
-
【OpenCV】画像の顔部分を検出する方法【Python】
OpenCV を使って、Python で画像から顔部分の検出を行ったときのメモです。 Anac
-
-
【Python】プログレスバーを表示させる【tqdm】
Python でスクリプトの実行時間が長くなると、進捗状況が知りたくなったので、標準出力にどのくらい
-
-
【Atomエディタ】Python 開発用にインストールしてみた。
Python でプログラミングするときの エディタ を探していたのですが、とりあえず Atom とい
-
-
【Python】Wikipedia のデータセットを取得し、文章を抽出する方法。
Wikipedia のデータセットを取得し、Python のライブラリを用いて文章を抽出する方法を紹
-
-
【Python】API を使って Amazon の商品情報を収集する方法。
AmazonAPI ライブラリをインストール 以下のコマンドで python-amazon-sim
-
-
【Python】Beautiful Soup を使ってスクレイピングする方法。
Beautiful Soup は、シンプルでわかりやすい API でデータを抜き出せる Python