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()
비슷하죠?
지금까지 Color Space의 변환에 대한 글이었습니다.
감사합니다.
지적 환영합니다.
'Python Library > OpenCV' 카테고리의 다른 글
[OpenCV] 이미지 읽기, 보기, 저장하기 (0) | 2022.12.23 |
---|