我是:
当我重新打开图像时,我看到不同的像素值。
我的代码片段:
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]
题
保存图像并重新打开后,为什么像素值会发生变化?
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')
我 - 'L'(8位像素,黑色和白色),我认为它适用于您的灰度图像。
希望这可以帮助。