2016-08-12 76 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)