EnsekiTT Blog

EnsekiTTが書くブログです。

OpenCVで画像のヒストグラムを表示してみる話

つまりなにしたの?

Photoshopとかで画像をいじるときに、カラーバランスを変更すると画像のヒストグラムが動く。
今日はこの画像のヒストグラムPythonOpenCVで作れるようになろうと思った。
f:id:ensekitt:20180813195550j:plain

画像のヒストグラムとは?

各色の明るさの度合い(0-255階調)にどれほどの数のピクセルがあるかを表現したもので、
Macのプレビューで出てくるのはこんな感じ
f:id:ensekitt:20180813195125p:plain:w320

おおまかな手順

  • 画像を読み込む
  • 画像のBGRをRGBに変更する(必須ではないけどMatplotlibのために実施)
  • 読み込んだ画像の表示
  • RGBそれぞれについてヒストグラムを描画する

環境

 % python --version
Python 3.6.4
 % pip freeze
opencv-python==3.4.0.12

コード

import cv2
import matplotlib.pyplot as plt

# 画像を読み込む
filename = "CAKE.JPG"
img = cv2.imread(filename)

# 画像のBGRをRGBに変更する(必須ではないけどMatplotlibのために実施)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# 読み込んだ画像の表示
plt.imshow(img)
plt.show()

# RGBそれぞれについてヒストグラムを描画する
color = ['r','g','b']
for i,col in enumerate(color):
    histr = cv2.calcHist([img],[i],None,[256],[0,256])
    plt.plot(histr,color = col)
plt.show()

描画されたヒストグラムはこちら
f:id:ensekitt:20180813194711p:plain

今回使った画像はこちら
f:id:ensekitt:20180813195219j:plain
ちょっと縮小してあるので形とか高さは異なるかもしれない。

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。