Искажение изображения после преобразования изображения Numpy в PIL

1

Я хочу преобразовать немного Numpy в изображение, поэтому я использовал изображение в PIL

from PIL import Image
im1 = Image.fromarray(np.uint8(X1)) # X1 dtype uint8, scale 0~255 image
im1.save("img.png")

im2= Image.fromarray(np.uint8(X2*255))   #X2 dtype uint16, sacke 0~1 mask ,so  X2*255
im2.save("mask.png")

X1, X2 - массивы NumPy. Затем произошло нечто запутанное. Некоторые изображения выглядят хорошо, но другие искажают.

Изображение 174551 Изображение 174551

Первый - это искажение, второй - нормальный.

  • 0
    Это два изображения, и маска выглядит хорошо, поэтому я их не отображаю.
  • 0
    Искажение появляется в im1, im2, который является двоичной маской, выглядит нормально.
Показать ещё 4 комментария
Теги:
matplotlib
numpy
python-imaging-library

1 ответ

0

Отредактировано после прочтения комментария @Mark Setchell: поскольку PNG не искажает значения, я думаю, они используют сжатие JPG. Если вы хотите, чтобы ваше изображение было таким, попробуйте это:

import cv2 

cv2.imwrite("img.png", img)

Вот документация.

  • 1
    Сжатие PNG без потерь, поэтому его включение или выключение или изменение значения качества никогда не искажают значения изображения - оно влияет только на размер файла и время сжатия.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню