Я использую skimage
для преобразования изображений RGB в цветовое пространство Lab, но кажется, что skimage использует тип данных float64
, а Tensorflow использует float32
.
Есть ли способ преобразовать 64-битное лабораторное изображение в 32-битный тип данных? Документация не содержит ничего конкретного по этому поводу, и я не уверен, что использование image.astype(np.float32)
— это правильный путь, поскольку это может повредить точности данных (или нет).
Вот часть кода:
from skimage import color, io
import numpy as np
rgb = io.imread('Test.jpg') # Could be any shape
lab = color.rgb2lab(rgb)
converted = np.array(lab).astype(np.float32)
rgb = color.lab2rgb(converted)
Последняя строка выдает ошибку:
ValueError: Images of type float must be between -1 and 1.
и вот трассировка стека:
File "C:\Anaconda3\lib\site-packages\skimage\color\colorconv.py", line 928, in lab2rgb
return xyz2rgb(lab2xyz(lab))
File "C:\Anaconda3\lib\site-packages\skimage\color\colorconv.py", line 855, in lab2xyz
arr = _prepare_colorarray(lab).copy()
File "C:\Anaconda3\lib\site-packages\skimage\color\colorconv.py", line 153, in _prepare_colorarray
return dtype.img_as_float(arr)
File "C:\Anaconda3\lib\site-packages\skimage\util\dtype.py", line 291, in img_as_float
return convert(image, np.float64, force_copy)
File "C:\Anaconda3\lib\site-packages\skimage\util\dtype.py", line 195, in convert
raise ValueError("Images of type float must be between -1 and 1.")
ValueError: Images of type float must be between -1 and 1.