728x90
반응형
문제 현상
cv2.imwrite("test.jpg",img)
위와 같은 코드를 작성했을 때 정상적인 상황이라면 원하는 이미지가 'test.jpg'로 저장되어야 한다.
하지만 위와 같이 아무것도 없는 검정색 이미지만 저장되는 문제가 발생했다.
원인
OpenCV의 cv2.imwrite는 기본적으로 unit8 (0~255) 정수형 데이터를 입력으로 받습니다.
저장하고자 하는 사진이 float64 (0~1) 실수 형태라서 문제가 발생하는 것입니다.
0~1 사이의 값은 검정색을 의미하는 0에 매우 가깝기 때문에 결과물이 검정색 이미지로 변환되게 됩니다.
해결 방법
1. 픽셀값의 범위가 0~255 되도록 정규화하자.
import cv2
result = cv2.normalize(img, dst=None, alpha=0, beta=255,norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
2-1. Matplotlib의 savefig()를 사용하자.
import matplotlib.pyplot as plt
plt.imshow(img)
plt.savefig('path_to_save')
Matplotlib의 경우 보통 그래프 그릴 때 많이 사용한다.
이런 상황이라면 자동으로 0~255 값으로 형변환 해주는 Matplotlib을 사용하자.
2-2. Matplotlib의 imsave()를 사용하자.
from matplotlib.image import imsave
imsave('test.jpg', img)
딱히 그래프가 아니라면 마찬가지로 형변환을 자동으로 해주는 Matplotlib을 사용해주자.
궁금한 점이 있으시다면 댓글 남겨주세요 ❣️
728x90
반응형
'에러 해결 모음집' 카테고리의 다른 글
[파이썬 에러] `np.complex` was a deprecated alias for the builtin `complex` (0) | 2025.04.08 |
---|---|
[파이썬 에러] name '_C' is not defined (0) | 2025.02.10 |
[파이썬 에러] TypeError: read() got an unexpected keyword argument 'ignoregamma’ (1) | 2025.02.05 |
[파이썬 에러] 'numpy.ndarray' object has no attribute 'dim'. (0) | 2024.06.11 |
[파이썬 에러] No module named 'torchvision.transforms.functional_tensor' (1) | 2024.06.07 |