Python

Pythonで画像の一部を切り出す方法

Pythonで画像の一部を切り出す方法

画像を扱っていると「一部だけ切り出したい」と思うことはないだろうか。

  • 人物の写真から顔だけ切り抜きたい
  • 4コマ漫画のうち1コマだけ切り出したい
  • パズルみたいに画像をN分割したい

少ない枚数を切り出すのであれば、手動で作業してもさほど時間はかからない。
しかし枚数が多くなると切り出す作業の負荷が高くなる

そして面倒な単純作業は極力排除したいのがITエンジニア。

今回はそんな画像処理の問題を解決するために「Pythonで画像の一部を切り出す方法」について解説する。

この記事を書いている人


からさん
システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。最近は画像も扱い始めた。

記事を読むメリット

  • 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行のコードで画像のトリミングができてしまった。


    少年
    これは簡単!
    OpenCV、便利ですな
    からさん



    Pythonで画像の一部を切り出す方法 まとめ

    Pythonで画像の一部を切り出すにはOpenCVを使うと簡単に切り出すことができる。

    使い方は以下の通り。

    ポイント

  • OpenCVの cv2.imread() で画像を読み込む
  • 切り出したい範囲を img[top : bottom, left : right] の形で四隅を指定して切り出す
  • トリミングした画像データを cv2.imwrite() のメソッドで保存する

  • OpenCVは画像切り出しだけでなく、多種多様な機能を備えているので、使いこなせるようになると市場価値の高いスキルを得られるだろう。

    参考



    他にもPythonでExcelデータを読む方法や、Pythonを使ってTwitterに自動投稿する方法についての記事もあるので、もし気になったら見てほしい。

    コチラもオススメ

    KRSW

    駆け出し機械学習エンジニア。機械学習、DB、WEBと浅く広い感じ。 Junior machine learning engineer. Not a specialist but a generalist who knows DB, WEB too.

    役に立ったらシェアしてくれると励みになります。

    にほんブログ村 IT技術ブログへ

    -Python
    -

    Translate »

    Copyright© ITips , 2020 All Rights Reserved.