OpenCV BGRからRGBに変換
画像表示は plt.imshow を使っています。
この場合、表示した画像の色がおかしくなります。
import cv2 import matplotlib.pyplot as plt my_img_bgr = cv2.imread('mika.jpg') plt.imshow(my_img_bgr) plt.show()
matplotlibを使うと画像の色がおかしくなります。
その理由はOpenCVでは画像の色管理がBGRの順になっているためです。
一方、matplotlibを使うと色の管理はRGBになります。
この問題を修正するには、BGRからRGBに変換する必要があります。
そのためには, cv2.cvtColor 関数を使用します。
my_img = cv2.cvtColor(my_img_bgr, cv2.COLOR_BGR2RGB) plt.imshow(my_img) plt.show()
色の構成をヒストグラムで確認
cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])
- images : 入力画像です.画素値のデータ型はuint8かfloat32のどちらかです.記号[]を使って “[img]” のように指定します
- channels : ヒストグラムを計算する画像のチャンネルのインデックスです.入力画像がグレースける画像であれば[0]を指定します.カラー画像であればヒストグラムを計算するB,G,Rの色相に対応する[0],[1],[2]のどれかの値を指定します
- mask : マスク画像です.画像中の全画素のヒストグラムを計算する場合 “None” を指定します.画像中の特定領域のヒストグラムを計算する場合は特定領域を表すマスク画像を指定します
- histSize : ビンの数です.この引数も記号[]を使って指定します.全画素値を対象とするのであれば [256] を指定します
- ranges : ヒストグラムを計測したい画素値の範囲を表す RANGE です.通常は [0,256] を指定します
color_list = ['Red', 'Green', 'Blue'] for i, j in enumerate(color_list): hist = cv2.calcHist([my_img],[i], None, [256], [0,256]) plt.plot(hist, color = j, label= j) plt.legend()
参考になった書籍
OpenCVというよりも、画像認識の理論面が幅広く数式を使って説明されています。画像分析を自分のものにしたい場合に最適です。
Pythonサンプルのダウンロード
ここでダウンロードする「opencv_basic.ipynb」ファイルは、このPython動画で使用したものです。
コメントを投稿するにはログインしてください。