OpenCV

画像処理 「OpenCV 4」チャンネルの分割とマージをしてみる

本格的に画像処理を始めるにあたり、画像の色のチャンネルの扱い方を確認しておきます。特定のチャンネルのみ操作したいという時に、取り出して、書き込むというケースなどで利用できます。

画像をBGRのチャンネルに分割

(b, g, r) = cv2.split(image)

BGRのチャンネルからもう一度画像にする

image_2 = cv2.merge((b, g, r))

特定のチャンネルのみを取得

r = image[:, :, 2]

サンプルコード

import cv2
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10.0, 10.0))

image = cv2.imread("image.png", 1)
(b, g, r) = cv2.split(image)
zeros = np.zeros(image.shape[:2], dtype="uint8")
plt.subplot(2, 3, 4)
plt.imshow(cv2.merge([b, zeros, zeros]))
plt.subplot(2, 3, 5)
plt.imshow(cv2.merge([zeros, g, zeros]))
plt.subplot(2, 3, 6)
plt.imshow(cv2.merge([zeros, zeros, r]))
plt.subplot(2, 3, 1)
plt.imshow(cv2.merge([b, g, r]))

plt.show()
実行結果