我是:
当我重新打开图像时,我会看到不同的像素值。
我的代码片段:
image = misc.imread('lena.jpg')
maximum = np.max(image) # finds maximum pixel value of image
img = np.divide(image, maximum) # divide every pixel value by maximum
# scale every pixel value between 0 and 127
img_scale = np.round(img * (np.power(2,7)-1)).astype(int)
misc.imsave('lena_scaled.jpg', img_scale)
img_reopen = misc.imread('lena_scaled.jpg')当我比较img_scale和img_reopen时,得到了不同的值:
By executing np.max(img_scale), I get 127.
By executing np.max(img_reopen), I get 255
By executing img_scale[0][0], I get [82,82,82]
By executing img_reopen[0][0], I get [156][156][156]问题
为什么在保存图像并重新打开图像后,像素值会发生变化?
发布于 2017-12-27 11:24:56
当图像保存到磁盘时,不保存函数会重新调整图像的标号。
misc.imsave函数使用遮罩下的bytescale将图像重定向到完整范围(0,255)。
这就是当您重新打开np.max 255的原因。请参阅文档这里。
后续:为了在不重新缩放的情况下保存您的值,您可以尝试使用misc.toimage函数并将结果保存如下:
im = misc.toimage(img_scale, high=np.max(img_scale), low=np.max(img_scale)
im.save('lena_scaled.jpg')使用'lena_scaled.jpg'阅读misc.imsave时,可以尝试使用以下方法:
misc.imread('lena_scaled.jpg', mode='I')我-‘L’(8位像素,黑色和白色),我相信这将适用于你的灰度图像。
希望这能有所帮助。
https://stackoverflow.com/questions/47988793
复制相似问题