컬러의 경우는 RGB의 3차원 형태.
0~255까지의 값을 이용해 밝기를 표현, 2차원 형태의 gray scale.
import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from PIL import Image
import requests
from io import BytesIO
url = 'https://cdn.pixabay.com/photo/2023/12/14/20/24/christmas-balls-8449616_1280.jpg'
response = requests.get(url)
pic = Image.open(BytesIO(response.content))
필요 라이브러리 로드후 pic에 저장
pic_arr = np.asarray(pic) # PIL 이미지를 array 형태로 변환
# R channel 분포 확인
pic_red = pic_arr.copy()
pic_red[:,:,1] = 0
pic_red[:,:,2] = 0
# G channel 분포 확인
pic_green = pic_arr.copy()
pic_green[:, :, 0] = 0
pic_green[:, :, 2] = 0
# B channel 분포 확인
pic_blue = pic_arr.copy()
pic_blue[:, :, 0] = 0
pic_blue[:, :, 1] = 0
plt.figure(figsize=(20,5))
plt.subplot(1,4,1)
plt.imshow(pic_arr)
plt.subplot(1,4,2)
plt.imshow(pic_red)
plt.subplot(1,4,3)
plt.imshow(pic_green)
plt.subplot(1,4,4)
plt.imshow(pic_blue)
plt.show()
채널은 R, G, B의 순서. 결과는 다음과 같다.
from google.colab.patches import cv2_imshow
cv2_imshow(pic_arr)
결과가 이상하게 나오는데, 이는 OpenCV와 matplotlib의 색공간 순서가 다르기 때문.
cv2.cvtColor(image arrary, 변경할 색공간)
함수를 이용하여 색공간을 변경해주면 정상적으로 시각화가 가능함. image = cv2.cvtColor(pic_arr, cv2.COLOR_RGB2BGR)