[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()



[OpenCV] 그림을 일정 각도만큼 회전시키기 (getRotationMatrix2D, warpAffine, 파이썬)


파이썬에서 OpenCV를 사용해서 그림을 원하는 각도만큼 회전시키려면 다음과 같이 하시면 됩니다.


import cv2

import matplotlib.pyplot as plt


그림BGR = cv2.imread("그림파일.jpg")

그림RGB = cv2.cvtColor(그림BGR, cv2.COLOR_BGR2RGB)

세로, 가로, 채널 = 그림RGB.shape


대각선 = int(((가로*가로 + 세로*세로)**0.5)) # 정수여야 합니다.

회전중심 = int(가로/2), int(세로/2) # 역시 정수여야 합니다.

회전각도 = 135 # 마음대로 정하세요    

새세로, 새가로 = 세로, 가로


그림회전 = cv2.getRotationMatrix2D(회전중심, 회전각도, 1) # 1은 확대/축소값입니다.

회전결과 = cv2.warpAffine(그림RGB, 그림회전, (새세로, 새가로))


# 이 아래 부분은 그림을 화면에 출력하기 위한 부분으로, OpenCV 알고리즘과는 상관이 없습니다.

plt.subplot(1, 2, 1) # 1행 2열에서 1번째 열

plt.imshow(그림RGB)


plt.subplot(1, 2, 2) # 1행 2열에서 2번째 열

plt.imshow(회전결과)


plt.show()



[OpenCV] 그림의 가로, 세로 길이를 비율대로 바꾸기 (resize, 파이썬)


그림 작업을 하다 보면 그림의 가로와 세로 길이를 비율에 맞추어서 바꾸어야 할 일도 생깁니다. 파이썬에서 OpenCV를 사용해서 다음과 같이 하시면 됩니다.


import cv2

import matplotlib.pyplot as plt

그림BGR = cv2.imread("그림파일.jpg")

그림RGB = cv2.cvtColor(그림BGR, cv2.COLOR_BGR2RGB)

새가로비율, 새세로비율 = 0.3, 1.7 # 좋아하는 숫자를 넣으세요

그림새크기 = cv2.resize(그림RGB, (0, 0), fx=새가로비율, fy=새세로비율)


# 이 아래 부분은 그림을 화면에 출력하기 위한 부분으로, OpenCV 알고리즘과는 상관이 없습니다.

plt.subplot(1, 2, 1) # 1행 2열에서 1번째 열

plt.imshow(그림RGB)


plt.subplot(1, 2, 2) # 1행 2열에서 2번째 열

plt.imshow(그림새크기)


plt.show()


참고하실만한 OpenCV 공식 설명서 링크입니다.

http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#resize



[OpenCV] 그림의 가로, 세로 길이 마음대로 바꾸기 (resize, 파이썬)


그림 작업을 하다 보면 그림의 가로와 세로 길이를 바꾸어야 할 일이 종종 생깁니다. 파이썬에서 OpenCV를 사용해서 다음과 같이 하시면 됩니다.


import cv2

import matplotlib.pyplot as plt

그림BGR = cv2.imread("그림파일.jpg")

그림RGB = cv2.cvtColor(그림BGR, cv2.COLOR_BGR2RGB)

새가로, 새세로 = 900, 300 # 좋아하는 숫자를 넣으세요

그림새크기 = cv2.resize(그림RGB, (새가로, 새세로))


# 이 아래 부분은 그림을 화면에 출력하기 위한 부분으로, OpenCV 알고리즘과는 상관이 없습니다.

plt.subplot(1, 2, 1) # 1행 2열에서 1번째 열

plt.imshow(그림RGB)


plt.subplot(1, 2, 2) # 1행 2열에서 2번째 열

plt.imshow(그림새크기)


plt.show()


참고하실만한 OpenCV 공식 설명서 링크입니다.

http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#resize



+ Recent posts