본문 바로가기
Development/OpenCV

[OpenCV] imread IMREAD_UNCHANGED flag 사용시 image rotation

by shuka 2021. 10. 12.
728x90
728x90

opencv imread에서 rotation된 이미지 원래대로 저장하는 방법

 

opencv에서 imread를 사용하는데 이미지에서 몇몇 장이 갑자기 rotate된 상태가 됐다.

img = cv2.imread('test.jpg', cv2.IMREAD_UNCHANGED)
cv2.imwrite('result.jpg', img)

 

그래서 원인을 찾아보다가 imread()할 때 주는 flag옵션이 문제인 것으로 발견됐다.

 

flag값을 cv2.IMREAD_UNCHANGED로 하면 자꾸 원본 이미지가 rotate된 상태가 되는 것이였다.

 

opencv imread의 flag는 총 3가지가 있다.

cv2.IMREAD_COLOR 1 이미지 파일을 Color로 읽고, Default값이다.
cv2.IMREAD_GRAYSCALE 0 이미지를 Grayscale로 읽는다.
cv2.IMREAD_UNCHANGED -1  이미지파일을 alpha channel까지 포함하여 읽는는다.

 

위의  flag 중 cv2.IMREAD_UNCHANGED 말고 cv2.IMREAD_COLOR를 하면 아무 문제 없이 원래의 입력 이미지를 read하게 된다.

 

아마 cv2.IMREAD_UNCHANGED를 사용하게 되면 alpha channel까지 포함해서 이미지를 read하게 되는데 그 때 이미지에 회전에 대한 정보가 들어 있어서 발생하는것 같다.

728x90
반응형

댓글