преобразование цветового пространства skimage превращает изображение в статическое

Я использую skimage модуля sci-kits для преобразования изображения из цветового пространства RGB в LAB и обратно. В этом вопросе я нашел следующие функции: Преобразование изображения RGB-> Lab с помощью python, но это не касается того, как изображение может быть превращено в статичное.

Код:

file = 'C://Users/Alec/Pictures/25 zone test.png'
pix = numpy.array(PIL.Image.open(file))
print(pix[0,0])
pix = color.rgb2lab(pix)
print(pix[0,0])
pix = color.lab2rgb(pix)
print(pix[0,0])
pix *= 255
print(pix[0,0])
pix = pix.astype(int)
print(pix[0,0])
pic = PIL.Image.fromarray(pix, 'RGB')
pic.show()

Выход:

[255 255 255]
[  1.00000000e+02  -2.45493786e-03   4.65342115e-03]
[ 1.  1.  1.]
[ 255.  255.  255.]
[255 254 254]

Вывод операторов печати кажется более или менее подходящим, однако результирующее изображение, безусловно, таковым не является.

Есть ли шаг, который мне не хватает, чтобы это сработало?

Исходное изображение:

Исходное изображение

Результат:

введите здесь описание изображения


person asheets    schedule 29.11.2017    source источник
comment
Возможный дубликат Преобразование изображения RGB-›Lab с помощью python   -  person user1767754    schedule 29.11.2017
comment
Вы делаете какие-то странные вещи, например, умножаете на 255, а затем перезаписываете его в следующей строке.   -  person user1767754    schedule 29.11.2017


Ответы (1)


Это преобразование туда и обратно возвращает мне исходное изображение (или что-то очень близкое):

from skimage import io, color
import matplotlib.pyplot as plt

image = io.imread('/tmp/colors.png')
lab = color.rgb2lab(image)
rgb = color.lab2rgb(lab)

plt.imshow(rgb)
plt.show()
person Stefan van der Walt    schedule 29.11.2017
comment
Должна быть проблема с тем, как PIL отображает изображение. Используя pyplot адрес! - person asheets; 29.11.2017
comment
Но в вашем коде это утверждение потерпит неудачу: assert (image == rgb).all(). - person Gill Bates; 06.01.2020
comment
Да, диапазоны разные. Следующее будет успешным: np.allclose(util.img_as_float(image), util.img_as_float(rgb)) - person Stefan van der Walt; 13.01.2020