この記事では、python-openCVを使って画像の輝度分布をカラム形式のテキストファイルに出力する方法をご紹介していきます。
具体的には、以下の画像から
以下のように横方向ピクセル数(x_pix)、縦方向ピクセル数(y_pix)、該当ピクセルの輝度(bright)を出力していきます。
それではさっそくやっていきましょう!
※カラム形式ではなく、行列形式で出力したい場合は以下の記事をご覧ください。
※この作業をpythonというプログラミング言語を用いて実行していきます。インストールから始めたい方は以下からご覧ください。
別途インストールが必要なopenCVについては以下で解説しています。
画像輝度をカラム形式で出力するサンプルコード
さっそくですが、サンプルコードのご紹介です。
#ライブラリインポート
import cv2
#画像の読み込み
pic=cv2.imread('mouse.jpg',cv2.IMREAD_GRAYSCALE)
h,w=pic.shape[:2]
#テキストファイルへの書き込み
file = open('kido_bunpu.txt', 'w')
file.write("x_pix"+"\t"+"y_pix"+"\t"+"bright"+"\n")
for i in range(h):
ykido=pic[i,:]
for j in range(w):
file.write(str(j)+"\t"+str(i)+"\t"+str(ykido[j])+"\n")
file.close()
今回は輝度出力する画像をこのコードを実行するフォルダ内にmouse.jpgとして保存しておき、テキストファイルはkido_bunpu.txtという名前で出力されるようにしています。
ここはあなたの状況にあわせて書き換えてください。
このコードを実行すると同じフォルダに冒頭に紹介したようなテキストデータが出力されているはずです。
サンプルコードの解説
先ほどのコードの基本的な流れは以下の通りです。
①画像を読み込む(縦、横幅も取得しておく)
②輝度を書き込む用のテキストファイルを開く
③横方向、縦方向にそれぞれfor文を回して輝度を取得
⇒②のテキストに書き込む
④テキストを閉じる
③のfor文が二重になっているところはプログラミング初心者にとっては難しいと思いますので、ざっくりとどんな処理を行っているのかをイメージ図でご紹介します。
先ほどのコード内のfor文でやっていることは、i=0でj=0~wまでのループを回す、i=1でも同じくj=0~wまでのループを回す、という作業を画像の縦方向ピクセル数分繰り返しているだけです。
そしてそれぞれのループの中で該当ピクセルの輝度をテキストに書き込んでいるというわけですね。
おわりに
というわけで今回はpython-openCVを使って、画像輝度をカラム形式で出力する方法をご紹介しました。
画像から情報を抜き出したいときなどにぜひご活用ください。
今回はカラム形式でしたが、以下の記事では表形式での出力方法をご紹介しています。
ぜひこちらもあわせてご覧ください。
【openCV-python】画像の輝度分布をテキストファイルに出力する方法!
このように、私のブログでは様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント