본문 바로가기
파이썬

파이썬 Python OpenCV-imshow는 BGR에서 RGB로 변환 할 필요가 없습니다.

by º기록 2020. 10. 11.
반응형

내가 믿기 때문에 OpenCV는 BGR 색상 공간의 이미지를 읽고 일반적으로 다음과 같이 RGB로 다시 변환해야합니다.

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

그러나 단순히 이미지를 읽고 표시하려고하면 색상이 괜찮아 보입니다 (BGR을 RGB로 변환 할 필요가 없음).

img_bgr = cv2.imread(image_path)
cv2.imshow('BGR Image',img_bgr)
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
cv2.imshow('RGB Image',img_rgb )
cv2.waitkey(0)

그렇다면 imshow () 가 함수 내에서 색상 공간을 자동으로 변경합니까 (BGR에서 RGB로) 아니면 색상 공간이 BGR이 계속 되었습니까?

 

해결 방법

 

BGR과 RGB는 색상 공간이 아니라 다른 색상 채널의 순서에 대한 규칙 일뿐입니다. cv2.cvtColor (img, cv2.COLOR_BGR2RGB) 는 어떤 계산도 수행하지 않으며 (HSV와 같은 변환과 같은) 순서를 전환합니다. 모든 순서가 유효합니다. 실제로 세 가지 값 (빨간색, 녹색 및 파란색)이 누적되어 하나의 픽셀을 형성합니다. 디스플레이에 주문한 순서를 알려 주면 원하는 방식으로 배열 할 수 있습니다.

OpenCV imread , imwrite imshow 는 실제로 모두 BGR 순서로 작동하므로 이미지를 읽을 때 순서를 변경할 필요가 없습니다. cv2.imread 를 입력 한 다음 cv2.imshow 로 표시하려고합니다.

BGR은 OpenCV 전체에서 일관되게 사용되지만 대부분의 다른 이미지 처리 라이브러리는 RGB 순서를 사용합니다. matplotlib imshow 를 사용하고 싶지만 OpenCV로 이미지를 읽으려면 BGR에서 RGB로 변환해야합니다.

 

참조 페이지 https://stackoverflow.com/questions/50963283

 

 

반응형

댓글