画像を扱っていると「一部だけ切り出したい」と思うことはないだろうか。
- 人物の写真から顔だけ切り抜きたい
- 4コマ漫画のうち1コマだけ切り出したい
- パズルみたいに画像をN分割したい
少ない枚数を切り出すのであれば、手動で作業してもさほど時間はかからない。
しかし枚数が多くなると切り出す作業の負荷が高くなる。
そして面倒な単純作業は極力排除したいのがITエンジニア。
今回はそんな画像処理の問題を解決するために「Pythonで画像の一部を切り出す方法」について解説する。
この記事を書いている人
記事を読むメリット
Pythonで画像の一部を切り出す方法
Pythonで画像の一部を切り出す方法。
それはOpenCVを使うと可能である。
ではどのように使えばよいか、OpenCVの使い方を説明していく。
OpenCVのインストール
OpenCVをインストールするには pip install
を用いる。
$ pip install opencv-python
OpenCVを使用して画像を切り出す
OpenCVをインストールしたら次はトリミング処理となる。
まずは入力の元画像を用意する。
元画像(649x800 px) |
---|
画像が用意できたらOpenCVの cv2.imread()
で画像を読み込む。
すると画像データを2次元配列のように扱うことができるので、切り出したい範囲を img[top : bottom, left : right]
の形で切り出したい四隅のピクセル値を指定する。
先にY軸方向のtopからbottomを指定するので、間違わないように注意したい。
トリミングした画像データは cv2.imwrite()
のメソッドで名前を付けて保存することができる。
import cv2 # 画像読み込み img = cv2.imread("boy_question.jpg") # img[top : bottom, left : right] # 画像の切り出し、保存 trim_img = img[240 : 650, 110: 530] cv2.imwrite("trim_img.jpg", trim_img)
トリミング結果は以下のようになる。
トリミング後の画像(420x410 px) |
---|
コメントを除けば、たった4行のコードで画像のトリミングができてしまった。
Pythonで画像の一部を切り出す方法 まとめ
Pythonで画像の一部を切り出すにはOpenCVを使うと簡単に切り出すことができる。
使い方は以下の通り。
ポイント
cv2.imread()
で画像を読み込むimg[top : bottom, left : right]
の形で四隅を指定して切り出すcv2.imwrite()
のメソッドで保存するOpenCVは画像切り出しだけでなく、多種多様な機能を備えているので、使いこなせるようになると市場価値の高いスキルを得られるだろう。
参考
Pythonのコードが出来上がったら次は定期的に実行させる環境に移してコードを実行すると思う。
ランニングコストをかけてネット上に実行環境を作るのもありだが、小型PCを購入してランニングコストを下げるのも1つの手かと思われる。
小型PCの魅力とオススメの機種について書いた記事があるので、もしよければ参考にして欲しい。
あわせて読みたい