파이썬 numpy 질문 Lossy conversion from float64 to uint8

조회수 1306회

파이썬 넘파이 튜토리얼(https://cs231n.github.io/python-numpy-tutorial/) 을 공부하고 있는데 오류가 발생하여 질문합니다.

<수정 전>

from scipy.misc import imread, imsave, imresize

img = imread('cat.jpg')
print(img.dtype, img.shape)  

img_tinted = img * [1, 0.95, 0.9]
img_tinted = imresize(img_tinted, (300, 300))
imsave('cat_tinted.jpg', img_tinted)

이미지

원래 코드는 위와 같은데 spicy 모듈을 사용할 수 없다고 하여 코드를 아래와 같이 수정하였습니다. 사진이 저정되긴 했는데 다음과 같은 문구가 뜹니다. 이 문제를 해결하려면 어떻게 해야하나요?

<수정 후>

from imageio import imread, imwrite
from skimage.transform import resize 

img =  imread ('cat.jpg') #이미지를 배열로 읽어들인다
print (img.dtype, img.shape) #데이터 타입, 크기 출력

img_tinted = img * [1,0.95, 0.9] #색깔 채널에 상수값을 스칼라배해서 색 변경(RGB)

img_tinted = resize(img_tinted, (300, 300)) #색변경 이미지 픽셀 크기 변경

imwrite('cat_tinted.jpg', img_tinted) #완성본 디스크에 기록

이미지

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    warning은 error랑은 다르게 문제가 발생해서 실행이 멈춘 건 아니고 "이런저런 문제가 있으니 알아둬" 정도라고 생각하시면 됩니다.

    보여주신 warning의 경우 float 타입의 값을 이미지화하려고 할 때 발생하는 것으로, 소수점 이하 값들이 없어져서 일부 정보가 소실된다는 것을 알려주는 것입니다.

    즉 신경쓰지 않으셔도 되고, 굳이 저 warning을 지우고 싶으시다면 img_tinted의 값들을 int로 변경해 준 후에 imwrite를 하세요.

    • 감사합니다.덕분에 경고문이 사라졌습니다! 박유정 2020.5.8 15:37

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)