Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

画像の輝度をヒストグラム表示する

やること
  • ファイル名を指定して画像ファイルを読み出す
  • 画像の全画素のB(青)G(緑)R(赤)の輝度をヒストグラム化する
使った関数
  • cv2.imread : 画像ファイルの読み出し
  • cv2.calcHist : 配列のヒストグラム計算
  • matplotlib.pyplot.plot : グラフを作成
  • matplotlib.pyplot.show : グラフの表示
環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • OpenCV 4.0.0
準備

画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。

f:id:T_A_T:20190226223525j:plain
coffee.jpg

コード
import cv2  #OpenCVのインポート
import matplotlib.pyplot as plt #matplotlib.pyplotのインポート

fname = "coffee.jpg" #画像ファイル名
img = cv2.imread(fname) #画像を読み出しオブジェクトimgに代入

hist_b = cv2.calcHist([img],[0],None,[256],[0,256]) #B(青)のヒストグラムを計算
plt.plot(hist_b,color = "b") #B(青)のヒストグラムをプロット

hist_g = cv2.calcHist([img],[1],None,[256],[0,256]) #G(緑)のヒストグラムを計算
plt.plot(hist_g,color = "g") #G(緑)のヒストグラムをプロット

hist_r = cv2.calcHist([img],[2],None,[256],[0,256]) #R(赤)のヒストグラムを計算
plt.plot(hist_r,color = "r") #R(赤)のヒストグラムをプロット

plt.show() #プロットを表示

実行結果

f:id:T_A_T:20190307205956p:plain

別の画像もやってみます。上のコードのファイル名だけ変えます。

f:id:T_A_T:20190307210221j:plain
mountain.jpg

実行結果

赤がほとんどなく、青が強いようです。

f:id:T_A_T:20190307210344p:plain

ブログランキングに参加しています

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