【python-openCV】画像に輝度のレンジバーを追加する方法!

この記事では以下の画像の白黒画像に対して、

f:id:yshgs_elec:20210402200439j:plain

各ピクセルの明るさ度合を表すレンジバー(Range Bar) を追加する方法をご紹介していきます。

f:id:yshgs_elec:20210402200533j:plain

あじけなかった最初の画像がすこしだけおしゃれになりましたね。

 

この作業をpythonというプログラミング言語を用いて実行していきます。

あなたのやりたいことと一致していれば、ぜひ続きをご覧ください。

 

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

スポンサーリンク

必要なライブラリ

◆openCV

◆numpy

どちらのライブラリも、pythonを勉強していくうえで欠かせないものですので、インストールしていなければぜひインストールしておきましょう。

スポンサーリンク

Range Barを作る際の考え方

実際のコードの紹介に移る前に、どのようにしてレンジバーを作っていくかという考え方をご紹介しておきます。

 

基本的には、

①既存の画像の指定した領域をある輝度値で塗りつぶし、

②その横にその輝度値を文字として入力するという作業を、

③塗りつぶす領域、輝度値を変更しながら①②を繰り返す

④レンジバーの上に表しているもののタイトルを表示する

ということを行っていくだけです。

(かなりパワープレーです。探せばもっと簡単なやり方があるかも・・・)

 

いずれにせよ、考え方は理解できたと思いますので、次は実際のコーディングに移っていきましょう。

スポンサーリンク

画像を合成するサンプルコード

以下が冒頭に紹介したようなレンジバーを追加するサンプルコードです。

※コードを実行するフォルダにmouse.jpgという名前で元画像を配置しています。

また、変更後の画像ファイルはadd_bar.jpgという名前で同じフォルダに出力されます。

◆pythonサンプルコード

#ライブラリインポート
import cv2
import numpy as np
#画像の読み込み
pic=cv2.imread('mouse.jpg', cv2.IMREAD_GRAYSCALE)
h,w=pic.shape[:2]

#位置、サイズ調整項目
margin_R=700
margin_B=500
size=20

#Rangebar作成
num_layer=8
for i in range(num_layer):
    pic[(h-margin_B+i*size):(h-margin_B+size+i*size),w-margin_R:w-margin_R+size]=255-round(255/num_layer)*i
for i in range(num_layer+1):
    cv2.putText(pic,
                str(round(255-(255/num_layer*i))),#文字列
                (w-margin_R+size+10,h-margin_B+(i*size)),#位置
                cv2.FONT_HERSHEY_SIMPLEX,#フォント
                0.5,#文字の大きさ調整
                200,#文字の色
                1)#文字の太さ調整

#タイトル作成
cv2.putText(pic,
            'Brightness',#文字列
            (w-margin_R,h-margin_B-size),#位置
            cv2.FONT_HERSHEY_SIMPLEX,#フォント
            0.5,#文字の大きさ調整
            200,#文字の色
            1)#文字の太さ調整

#画像の出力     
cv2.imwrite('original.jpg',np.array(pic))

コードが長くて読むのが面倒かもしれませんが、やっていることは先ほど紹介したように非常にシンプルですので、ぜひ頑張って読んでみましょう。

(もしかしたらもっと簡単なやり方があるかもしれません。知っている方がいればコメント欄から教えてください。 )

 

なお、レンジバーを置く場所、大きさを変更したい場合は、以下を調整すればOKです。

margin_R=100
margin_B=200
size=20

また、今回は8bit画像の最大輝度が255であることを想定して書いています。

あなたの状況に応じて適宜修正してご活用ください。

スポンサーリンク

おわりに

というわけで今回はpython-openCVを使って、画像の輝度値を表すレンジバーを追加する方法をご紹介しました。

あなたの業務に少しでもお役に立てていれば幸いです。

 

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

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。
 
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

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

それではまた!

コメント

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