【python-openCV】クリックした位置の色(BGR値)を連続取得する方法!

このページではpython(無料のプログラミング言語)を使って、以下の動画のように、画像内のクリックした場所のBGR値をリアルタイムに表示する方法をご紹介していきます。

※一般的にRGBという呼び方をすると思いますが、今回使用するopenCVではBGRの順番で使うことが一般的ですので、この記事でもBGRの順番で行かせていただきます。

カラー画像のクリック位置のBGR値を取得している様子

赤いところをクリックするとR(Red)の値が大きく、青いところをクリックするとB(Blue)の値が大きくなっているのがわかると思います。

 

ページの後半にはクリックなしでマウス移動だけでこれらを表示する方法もご紹介していきます。

 

実験で取得した画像の分析の際などに非常に役立ちますので、ぜひご活用ください。

※今回の内容は以前紹介したクリック位置の座標を取得するスキルの応用版です。

興味があればこちらもあわせてご覧ください。

 

それではやっていきましょう!

 

スポンサーリンク

クリック位置のBGR値を表示するサンプルコード

さっそくですが、以下がそのサンプルコードです。

※プログラム実行フォルダに先ほど紹介した画像が、sample.jpgというファイルが入っていることを想定して書いています。

import cv2
import numpy as np
file_name='sample.jpg'
img=cv2.imread(file_name,cv2.IMREAD_COLOR)
img=cv2.resize(img,(1000,600))
def click_pos(event, x, y, flags, params):
    if event == cv2.EVENT_LBUTTONDOWN:
        img2=np.copy(img)
        cv2.circle(img2,center=(x,y),radius=5,color=(0,0,0),thickness=-1)
        B,G,R=img[y,x,:]
        bgr_str='(B,G,R)=('+str(B)+','+str(G)+','+str(R)+')'
        cv2.putText(img2,bgr_str,(30, 50),cv2.FONT_HERSHEY_PLAIN,2,(0,0,0),2,cv2.LINE_AA)
        cv2.imshow('window', img2)
        
cv2.imshow('window', img)
cv2.setMouseCallback('window', click_pos)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

こいつを実行すると以下のように、クリックした位置に黒いプロットが現れ、さらに画面の左上にその場所のBGR値を表示することができます。

クリック位置のBGR値を取得した結果

 

非常に簡単ですね。

 

スポンサーリンク

マウス移動位置の輝度を取得するサンプルコード

先ほどはクリックした際にBGR値を取得していましたが、次はマウスの移動に連動して輝度値を表示させてみましょう。

import cv2
import numpy as np
file_name='sample.jpg'
img=cv2.imread(file_name,cv2.IMREAD_COLOR)
img=cv2.resize(img,(1000,600))
def click_pos(event, x, y, flags, params):
    if event == cv2.EVENT_MOUSEMOVE:
        img2=np.copy(img)
        cv2.circle(img2,center=(x,y),radius=5,color=(0,0,0),thickness=-1)
        B,G,R=img[y,x,:]
        bgr_str='(B,G,R)=('+str(B)+','+str(G)+','+str(R)+')'
        cv2.putText(img2,bgr_str,(30, 50),cv2.FONT_HERSHEY_PLAIN,2,(0,0,0),2,cv2.LINE_AA)
        cv2.imshow('window', img2)
        
cv2.imshow('window', img)
cv2.setMouseCallback('window', click_pos)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

cv2.EVENT_LBUTTONDOWN(左クリック)をcv2.EVENT_MOUSEMOVE(マウス移動)に変えただけですね。

 

あなたの状況に応じて使い分けてください。

 

スポンサーリンク

おわりに

というわけで今回はpython-openCVを使って、画像内クリック位置のBGR値を取得し、画面上に表示する方法をご紹介しました。

 

画像データ解析の際などにぜひご活用ください。

 

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

過去記事一覧

 

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

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村 IT技術ブログへ
にほんブログ村

それではまた!

コメント

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