我想检查一下我是否正确地将数据从矩阵保存到图像文件。为此,我做如下:
图像元素和矩阵元素都是不同的;是因为一些转换原因?我应该更改保存矩阵的方式,以及如何加载图像吗?
这是我的代码:
filename = 'image_%03i_%03i.jpeg' % (index, peak)
rescaled = (255.0 / matrix.max() * (matrix - matrix.min())).astype(np.uint8)
im = Image.fromarray(rescaled)
im.save(filename)
#Now I read the image I just saved, and check if the values are effectively those of the matrix
im_1 = Image.open(filename)
im_1_check = im_1.load()
for i in range(0, ran_x, 1):
for j in range(0, ran_y, 1):
print rescaled[i,j], im_1_check[i,j]
答案 0 :(得分:0)
您在代码中保存为jpg,因此您可以预期由于压缩而产生不同的值。尝试将filename = 'image_%03i_%03i.jpeg' % (index, peak)
更改为filename = 'image_%03i_%03i.png' % (index, peak)
并查看是否可以解决问题。
同样如评论中所述,您将im_1_check
与原始矩阵进行比较,而不是rescaled
。
答案 1 :(得分:0)
要将rescaled
矩阵与保存的图像进行比较,您需要更改索引并将rescaled[i,j]
与im_1_check[j,i]
进行比较。定义diff = ndarray((ran_x,ran_y),int)
,上面代码的最后部分变为
for i in range(0, ran_x, 1):
for j in range(0, ran_y, 1):
diff[i,j] = rescaled[i,j] - im_1_check[j,i]
print rescaled[i,j], im_1_check[j,i], diff[i,j]
diff
值均为零。