【python-openCV】画像の縁を指定ピクセル数で除去する方法!

f:id:yshgs_elec:20210115212842j:plain

「画像の中心部以外は必要ないから除去したい。」

画像処理などを行っているとこのような状況に出くわすことがあります。

この記事ではそのような状況に対応するために、python-openCVを使って画像の縁を指定したピクセル数で除去するコードをご紹介していきます。

画像の縁を任意のピクセル数で切り取るという作業イメージ図

それでは早速やっていきます!

スポンサーリンク

必要なライブラリの準備

今回はopenCVというライブラリのみを使用します。

 

会社の環境なんかだとインストールにてこずったりするので、いろいろ調べながらインストールを進めましょう。

 

参考に私が解決できたときの方法をご紹介しておきます。

python-openCVのインストール方法!Windows&Anaconda使用

 

インストールができたらいよいよプログラムの作成です。

 

スポンサーリンク

openCVで画像の縁を除去するプログラム

今回は以下の画像の縁を切り取っていこうと思います。

周囲を除去するサンプル画像

この画像は

縦:3024ピクセル
横:4032ピクセル

ありますので、今回は上、下、右、左、それぞれから500ピクセルを除去してみましょう。

つまり最終的には

縦:2024ピクセル
横:2032ピクセル

になります。

 

この画像をpythonを実行するフォルダにおいておきましょう。

※今回はsample.JPGという名前で保存されている想定でコードを書いています。

 

事前説明はこのくらいにして、コード紹介にうつります。

◆画像の縁を指定ピクセル数除去するpythonコード

import cv2
cutp=50
img = cv2.imread('sample.JPG', cv2.IMREAD_COLOR)
h,w= img.shape[:2]
img=img[cutp:h-cutp,cutp:w-cutp]
cv2.imwrite('cut_pic.jpg',img)

まぁなにやら長ったらしいことを書いていますが、やっていることは非常にシンプル。

⓪除去するピクセル数を宣言

①cv.imreadで画像を読み込み配列化

②読み込んだ画像の周囲のデータを除去

③加工した配列を再び画像として出力

ということをやっているだけです。

※途中で配列を除去する際に画像の高さと幅が必要なので取得したりしています。

 

スポンサーリンク

サンプルコードの実行結果

最後に先ほど紹介したサンプルコードを実行してみましょう。

処理前の以下の画像が

プログラム実行前の画像

先ほどのコードを実行することで以下のようになりました。

サンプルプログラムによって周囲を除去された画像

しっかりと左側のビルが右側の木の一部がなくなっていますね。

 

スポンサーリンク

おわりに

というわけで今回はpython-openCVを使って、画像の縁を指定ピクセル数除去する方法をご紹介しました。

 

pythonはAI開発にも用いられている、最近人気のプログラミング言語です。

少しずつでもpythonスキルを高め、社内での地位を高めていきましょう。

 

このように私のブログでは様々なプログラミングスキルを紹介しています。

・もっと革新的なことをやりたい。

・プログラミングについてもっと詳しくなりたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

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

それではまた!

コメント

タイトルとURLをコピーしました