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

f:id:yshgs_elec:20210115212842j:plain

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

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

 

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

f:id:yshgs_elec:20210204155723j:plain

 

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

 

スポンサーリンク

環境の準備

今回はanaconda promptを使って実行していきます。

anacondaにはおおよそのライブラリが組み込まれていますが、openCVは入っていませんので、自分でインストールする必要があります。

インストールしていない方は以下の記事を参考にインストールしてみましょう。

【openCV】インストール方法!Windows&anacondaプロント&Python利用者用

 

通常のpythonを用いて行う場合、openCVに加えてnumpyというライブラリもインストールする必要があります。

ここは【numpy インストール】とか検索すればすぐにインストールできるはずです。

 

環境準備が整ったら、実際にコードを書いていきましょう。

スポンサーリンク

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

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

f:id:yshgs_elec:20210204155737j:plain

この画像は

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

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

つまり最終的には

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

になります。

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

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

 

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

 

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

import cv2
import numpy as np
cut_pixel=500
img = cv2.imread('sample.JPG', cv2.IMREAD_COLOR)
height, width = img.shape[:2]
print("読み込んだ画像の高さ",height)
print("読み込んだ画像の幅"width)
img=np.delete(img,slice(0, cut_pixel, 1),0)
img=np.delete(img,slice(0, cut_pixel, 1),1)
height, width = img.shape[:2]
img=np.delete(img,slice(height-cut_pixel, height, 1),0)
img=np.delete(img,slice(width-cut_pixel, width, 1),1)
height, width = img.shape[:2]
print("出力する画像の高さ",height)
print("出力する画像の幅"width)
cv2.imwrite('cut_pic.jpg',np.array(img))

 

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

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

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

②np.deleteで①の配列の端を削除

③②の作業を4辺に適用

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

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

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

スポンサーリンク

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

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

 

処理前の以下の画像が

f:id:yshgs_elec:20210204155737j:plain

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

f:id:yshgs_elec:20210204155806j:plain

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

 

スポンサーリンク

おわりに

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

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

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

 

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

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

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

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

 

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

 ↓ 応援ボタン

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

 

それではまた!

 

コメント

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