안녕하세요, Davey입니다. 오늘 포스팅할 내용은 opencv로 불러온 이미지를 흑백 색상으로 변화시키는 방법에 대해서 설명해 드리겠습니다. 나중에 이미지를 가지고 머신러닝이나 사물 인식하는 용도로 사용할 때 꼭 필요한 기능입니다.
opencv 이용하여 이미지 색상 흑백으로 바꾸기
: 위에서 애기 드린 대로, 보통 처음 opencv 를 접하고 이 회색으로 바꾸는 코드를 접하게 되면 의문을 가지게 됩니다. 왜 다른 색깔이 아닌 회색으로 하는 건지. 나중에 흑/백으로 구분하여 이미지 인식 및 딥러닝을 위해서 하는 기초 코드입니다. 나중에 딥러닝을 구현하게 되면 그때 다시 설명드리도록 하겠습니다.
- 아래 코드를 이용하여 이미지를 회색으로 바꾸실 수 있습니다.
코드 분석
1) cv2.cvtColor(불러온 이미지, 변환하려는 색상 속성 값) : 불러온 이미지를 COLOR_BGR2GRAY라는 속성 값으로 변환
# opencv 라이브러리 호출
import cv2
# 원본 이미지를 불러옴
test_read = cv2.imread("002.jpg", cv2.IMREAD_COLOR)
# 색상 Gray로 변환
gray_tr1 = cv2.cvtColor(test_read, cv2.COLOR_BGR2GRAY)
opencv로 회색 색상 변환한 이미지 출력하기
: 위의 코드를 이용하여 회색 색상으로 바꾼 이미지를 출력해보도록 하겠습니다. 일단 출력되는 회색 색상의 이미지를 비교하기 위해 원본 이미지도 같이 출력하도록 하겠습니다. 출력하는 코드는 아래와 같습니다. 그리고 출력한 이미지 결과값도 같이 첨부 드리도록 하겠습니다.#원본 이미지와 회색으로 변환 이미지를 출력
cv2.imshow("Original Photo", test_read)
cv2.imshow("Gray Color Photo", gray_tr1)
cv2.waitKey(0)
cv2.destroyAllWindows()
- 이전 포스팅에서 어느 부분에서 제가 channel에 대해서 잘 모르겠다고 한 거 기억나시나요?! 이번에 그 channel을 정리해보도록 하겠습니다. print를 통해서 출력되는 게 수치였거든요. 그 수치 범위를 구분해보았습니다. 그리고 추가적으로 색상 공간 코드도 정리해보았습니다.
1) CV_8U 이미지 값 범위 : 0 ~ 255
2) CV_16U 이미지의 값 범위 : 0 ~ 65535
3) CV_32F 이미지의 값 범위 : 0 ~ 1
색상 공간 코드
색상 공간 코드 속성 |
의미 |
비고 |
BGR |
Blue, Green, Red 채널 |
- |
BGRA |
Blue, Green, Red, Alpha 채널 |
- |
RGB |
Red, Green, Blue 채널 |
- |
RGBA |
Red, Green, Blue, Alpha 채널 |
- |
GRAY |
단일 채널 |
그레이스케일 |
BGR565 |
Blue, Green, Red 채널 |
16 비트 이미지 |
XYZ |
X, Y, Z 채널 |
CIE 1931 색 공간 |
YCrCb |
Y, Cr, Cb 채널 |
YCC (크로마) |
HSV |
Hue, Saturation, Value 채널 |
색상, 채도, 명도 |
Lab |
L, a, b 채널 |
반사율, 색도색도 1, 색도2 |
Luv |
L, u, v 채널 |
CIE Luv |
HLS |
Hue, Lightness, Saturation 채널 |
색상, 밝기, 채도 |
YUV |
Y, U, V 채널 |
밝기, 색상색상 1, 색상2 |
BG, GB, RG |
디 모자가 킹 |
단일 색상 공간으로 변경 |
_EA |
디 모자가 킹 |
가장자리 인식 |
_VNG |
디 모자가 킹 |
그러데이션사용 |
[색상 속성값에 다른 색상 공간 코드를 조합하여 사용할 수 있습니다. BGR2GRAY는 Blue, Green, Red 채널 이미지를 단일 채널, 그레이스케일 이미지로 변경하는데 이용했다라고 생각하시면]
맺음말
: 이상입니다. 이번 포스팅은 Python opencv 이용하여 불러온 이미지의 색상을 흑백으로 바꾸는 코드를 구현해보았습니다. 이전에는 이 흑백으로 구현하는 코드 먼저 습득하였습니다. 왜냐하면, 제가 하고 싶은 거는 이미지 인식 및 인식한 정보를 머신러닝 하는 것이어였습니다. 그런데 기초부터 공부하고 싶은 생각이 들어서 이렇게 하나하나 공부하고 있습니다. 그럼 이만 마무리하도록 하겠습니다. 감사합니다.
제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁드립니다. 감사합니다.
[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을 때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
'파이썬 (Python) > 딥러닝 (Deep Learning)' 카테고리의 다른 글
Python opencv 이용하여 이미지 색상을 반전 시키는 방법 + 색상 역상시키는 방법 (0) | 2021.02.24 |
---|---|
Python opencv 이용하여 이미지 이진화하는 방법 (0) | 2021.02.24 |
Python opencv 이용하여 이미지 원하는 부분만 자르기 방법 (0) | 2021.02.23 |
Python opencv 이용하여 이미지 확대 및 축소 하는 방법 (0) | 2021.02.22 |
Python opencv 이용하여 이미지 회전해서 출력하는 방법 (1) | 2021.02.22 |
댓글