[OpenCV] 그림에서 RGB 채널을 각각 분리하기 (파이썬)
파이썬에서 OpenCV를 사용해서 그림의 RGB 채널을 각각 분리하려면 다음과 같이 하시면 됩니다. 제 예제 꽃 사진에는 빨간색과 초록색이 많고 파란색은 거의 없네요.
import cv2
import matplotlib.pyplot as plt
그림BGR = cv2.imread("그림파일.jpg")
그림RGB = cv2.cvtColor(그림BGR, cv2.COLOR_BGR2RGB)
# 빨간색만 뽑기
그림R = 그림RGB.copy() # 이렇게 해야 제대로 복사가 됩니다.
그림R[:,:,1] = 0 # 1: 초록색 없애기
그림R[:,:,2] = 0 # 2: 파란색 없애기
# 초록색만 뽑기
그림G = 그림RGB.copy() # 이렇게 해야 제대로 복사가 됩니다.
그림G[:,:,0] = 0 # 0: 빨간색 없애기
그림G[:,:,2] = 0 # 2: 파란색 없애기
# 파란색만 뽑기
그림B = 그림RGB.copy() # 이렇게 해야 제대로 복사가 됩니다.
그림B[:,:,0] = 0 # 0: 빨간색 없애기
그림B[:,:,1] = 0 # 1: 초록색 없애기
# 이 아래 부분은 그림을 화면에 출력하기 위한 부분으로, OpenCV 알고리즘과는 상관이 없습니다.
plt.subplot(1, 4, 1) # 1행 2열에서 1번째 열
plt.imshow(그림RGB)
plt.subplot(1, 4, 2) # 1행 2열에서 2번째 열
plt.imshow(그림R)
plt.subplot(1, 4, 3) # 1행 2열에서 2번째 열
plt.imshow(그림G)
plt.subplot(1, 4, 4) # 1행 2열에서 2번째 열
plt.imshow(그림B)
plt.show()
'개발, 전산, AI, IT' 카테고리의 다른 글
[OpenCV] 꼭짓점 (코너, corner) 추출 (cornerHarris, 파이썬) (0) | 2018.05.11 |
---|---|
[OpenCV] 외곽선, 모서리 (엣지, edge) 추출 (Canny, 파이썬) (0) | 2018.05.11 |
[OpenCV] 그림 좌우 및 상하 반전시키기 (flip, 파이썬) (0) | 2018.05.11 |
[OpenCV] 그림을 일정 각도만큼 회전시키기 (getRotationMatrix2D, warpAffine, 파이썬) (2) | 2018.05.11 |
[OpenCV] 그림의 가로, 세로 길이를 비율대로 바꾸기 (resize, 파이썬) (0) | 2018.05.11 |