忍者ブログ

更新不定期日記

管理人の気まぐれで更新される正直どうでもいい更新不定期日記。

おぺんcvメモ


imread(ファイル名, 1)は画像をBGR形式で格納する(それぞれ0~255)
1ピクセルが[b, g, r]というリストであらわされる
それが2次正方行列になっている


img = cv2.imread('sample.png', 1)
print(img)

出力結果
[[[ 39 127 255]
[204 72 63]]

[[127 127 127]
[ 29 230 181]]]

imread(ファイル名, 0)は画像をグレースケールで格納する
0~255の整数が2次正方行列に格納される

img = cv2.imread('sample.png', 0)
print(img)

出力結果
[[173 98]
[127 203]]

BGR形式をグレースケールに変換
※単にimreadの0で読み込んだ時と結果が異なるので注意
img = cv2.imread('sample.png', 1)
grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
print(grayImg)

出力結果
[[155 84]
[127 192]]

使えるのは
RGB2GRAY, BGR2GRAY,
RGB2HSV, BGR2HSV, HSV2RGB, HSV2BGR
などがある
(HSVは色相, 彩度, 明度)

img = cv2.imread('sample.png', 1)
imgHsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
print(imgHsv)

出力結果
[[[ 12 216 255]
[118 176 204]]

[[ 0 0 127]
[ 37 223 230]]]


ヒストグラムの計算
cv2.calcHist([img], [チャンネル番号], None , [256], [0, 256])

チャンネル番号は例えばimgがBGRであれば
Blueが0, Greenが1, Redが2である
imgがGrayなら0を指定すればよい


ヒストグラムの簡易プロット
from matplotlib import pyplot as plt
hist = cv2.calcHist([img], [0], None , [256], [0, 256])
plt.plot(hist)
plt.xlim([0, 256])