2016-08-12 3 views
0

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

Изображение сначала считывается в массив размера (150,200,3).

image_data = ndimage.imread(image_file,mode='RGB').astype(float) 

Далее Я масштабирую значения пикселей, а затем возвращаю их исходные значения. Кроме того, я возвращаю массив float обратно в целочисленный массив.

image_data = (image_data - (255.0/2))/255.0 
    image_data = (image_data * 255.0) + (255.0/2) 
    image_data = image_data.astype(int) 

Теперь я сохраняю изображение в файле initial.jpg.

image0 = PILImage.fromarray(image_data,mode='RGB') 
    image0.save('Tests/Initial.jpg') 

сохраненное изображение выглядит так ...

enter image description here

Однако, если я удалю матричное умножение и литья (средние три строки кода). Я сохраняю изображение, которое выглядит так. Это правильный файл.

enter image description here

Я проверил матрицы и модифицированные матрицы идентичны оригиналу, так что я запутался, почему образы не будут идентичны, а также.

ответ

0

Обнаружено, что массивы изображений могут быть сохранены правильно, если они имеют тип uint8. Меняем

image_data = image_data.astype(int)

в

image_data = image_data.astype(np.uint8)

Смежные вопросы