Python Library/OpenCV

[OpenCV] Color Space 변환

바보1 2022. 12. 26. 18:17

OpenCV에는 수많은 변환 방법이 있습니다.

 

변환을 위해 사용하는 함수는 cv2.cvtColor() 입니다. 

## cv2.cvtColor(src, code)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  • cv2.COLOR_BGR2GRAY는 BGR 이미지를 GRAY로 바꿉니다.
  • 반대로 cv2.COLOR_GRAY2BGR은 GRAY 이미지를 BGR로 바꿉니다.
  • cv2.COLOR_BGR2HSV, cv2.COLOR_HSV2BGR도 있으므로 상황에 맞춰서 사용하면 됩니다.

 

BGR을 GRAY로 바꾸기 위해서는 각 픽셀마다 BGR의 평균으로 맞춰야 하지만, 사람 눈은 초록색에 민감하기 때문에 미세한 조정이 필요합니다.

OpenCV에서는 BGR2GRAY에서 비율을 0.299*R + 0.587*G + 0.114*B로 맞춥니다.

import cv2
import numpy as np

img = cv2.imread('../picture/lena.jpg', cv2.IMREAD_COLOR)      # BGR
img_gray = np.zeros_like(img)

for i in range(3):
    # 0.299 R + 0.587 G + 0.114 B
    img_gray[:, :, i] = 0.299 * img[:, :, 2] + 0.584 * img[:, :, 1] + 0.1148 * img[:, :, 0]

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

cv2.imshow('BGR2GRAY', img)
cv2.imshow('Gray', img_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

좌측이 cvtColor 함수를 사용한 이미지, 우측이 비율에 맞게 코드로 변환한 이미지

비슷하죠?

 

지금까지 Color Space의 변환에 대한 글이었습니다.

감사합니다.

지적 환영합니다.

'Python Library > OpenCV' 카테고리의 다른 글

[OpenCV] 이미지 읽기, 보기, 저장하기  (0) 2022.12.23