我:
当我重新打开图像时,我看到不同的像素值。
我的代码段:
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]
问题
保存图像并重新打开后,为什么像素值会发生变化?
答案 0 :(得分:1)
imsave函数在保存到磁盘时重新调整图像。
misc.imsave
函数使用引擎盖下的bytescale
将图像重新缩放到最大范围(0,255)。
这就是你重新开启时np.max
255的原因。请参阅文档here。
<强>随访:强>
要在不重新缩放的情况下保留您的值,您可以尝试使用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')
I - 'L'(8位像素,黑白) 我认为这对你的灰度图像很有用。
希望这有帮助。