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
반응형
'Development > OpenCV' 카테고리의 다른 글
[OpenCV] libgthread-2.0.so.0: cannot open shared object file 해결 (0) | 2022.01.14 |
---|---|
[OpenCV] OpenCV circle, rectangle, text 그리기와 PIL 한글 text (1) | 2021.11.17 |
[OpenCV] libGL.so.1: cannot open shared object file 해결 (0) | 2021.10.25 |
[OpenCV] 이미지 hstack으로 붙이기 (0) | 2021.10.21 |
[OpenCV] OpenCV Library build 방법 (0) | 2021.10.20 |
댓글