つれづれなる備忘録

日々の発見をあるがままに綴る

OpenCVの使い方2 ~ トリミング、RGB情報取得

 前回に続いてOpenCVを使用方法について、今回は画像のトリミング、RGB情報の取得について紹介したい。

1. 画像読み込みまで

 今回は以前撮影した源平桃の画像を使用する。

atatat.hatenablog.com

Google Colabにアップロードした画像は前回と以下の同じコードで読み込み、表示させる。

import cv2
orig = cv2.imread(uploaded_file_name)
src = cv2.cvtColor(orig, cv2.COLOR_BGR2RGB)
from matplotlib import pyplot as plt
import numpy as np
plt.imshow(src)

"花の画像"
花の画像

2. 画像のトリミング

画像のトリミング(切り取り)は、画像を読み込んだsrcの配列のアドレスを用いればよい。例えば縦150-350, 横250-450で花のつぼみ付近を切り出すには

trim_src=src[150:350,250:450]
plt.imshow(trim_src)

実行結果は以下のようになる。

"トリミング"
トリミング

3. RGB情報の取得

 画像のRGB情報は読み込んだsrcの画素アドレスを指定すると、RGBの各値を取得することができる。

px = src[200,415]
print(px)
>[128  59  64]

さらに画素アドレスに続いて、0,1,2のいずれかを指定するとR,G,Bの値が得られる。

px_red=src[200,415,0]
print(px_red)
>128

画像全体のRGBそれぞれの強度を得るにはcv2.split()を用いる。以下のコードはsplit()により得られた各RGBの強度を表示する

r,g,b = cv2.split(src)
plt.figure(figsize=(10,4))
plt.subplot(1,3,1)
plt.imshow(r)
plt.subplot(1,3,2)
plt.imshow(g)
plt.subplot(1,3,3)
plt.imshow(b)

"RGB強度"
RGB強度

なおsplit()によりr,g,bに分割されたRGB強度分布をmerge()を用いて結合すると元の画像に戻る。

"RGB強度の結合"
RGB強度の結合

4. まとめ

 今回はOpenCVを用いて画像のトリミング、RGB情報の取得に関する方法を紹介した。