2017年10月12日木曜日

画像の三原色をヒストグラムで表示する

に記述した通り、カラー画像の場合、cv2.imread 関数の戻り値は、青・緑・赤の色成分の配列となる。
> import cv2
> img = cv2.imread(IMG_FILE)
> print(img)

[[[26 34 71]
  [27 35 72]
  [27 35 72]
  ..., 
  [31 29 59]
  [37 35 64]
  [48 45 71]]

 [[24 33 67]
  [24 33 67]
  [24 33 67]
  ..., 
  [30 28 58]
  [30 28 57]
  [38 35 61]]

 ..., 
 [[26 19 54]
  [26 18 55]
  [24 16 56]
  ..., 
  [21 11 27]
  [21 10 30]
  [20  8 30]]]
最も内側のリストは、1ピクセルの青・緑・赤の要素を表している。上の例の場合、最初の1ピクセルは、青=26, 緑=34, 赤=71 で色が作られている。
さて、このリスト形式から各色のリストを作る。
> b = img[:, :, 0]
> g = img[:, :, 1]
> r = img[:, :, 2]
このデータに対してヒストグラムを表示する。
> from matplotlib import pyplot as plt
> plt.hist([r.ravel(), g.ravel(), b.ravel()], 10, [0, 256], alpha=0.3,
           color=["R", "G", "B"], stacked=False)
上側の画像に対して、作成したヒストグラムが下側の図になる。

0 件のコメント:

コメントを投稿