为什么图片在255时会变成紫色?

问题描述 投票:0回答:2

首先将RGB图像缩放为[0,1],然后在matplotlib中正常显示。

然后我将其恢复(以255倍显示),并显示为紫色,如下面粘贴的图片所示。

原因是什么?怎么解决呢?将图像重新缩放为[0,255]的正确方法是什么?

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

dog = mpimg.imread('1.jpg')
dog = dog / 255
plt.subplot(121)
plt.imshow(dog) #Normal and ok here
plt.title(('/255'))

dog = dog*255
plt.subplot(122)
plt.imshow(dog) # Purple image, not ok
plt.title('*255')

plt.savefig('out.jpg')
plt.show()

“样本图像”“>

===========================这里的一行================= ===========

由@BruceWayne建议,我尝试使用* -255而不是* 255,并且可以。

但是原因是什么?为什么[-255,0]值的图片显示正常,而[0,255]值的图片却以不同的方式显示?

首先将RGB图像缩放为[0,1],然后可以在matplotlib中显示。然后我将其恢复(乘以255),并显示出来,但是变成紫色,如下面粘贴的图片所示。什么是...

python image matplotlib normalization
2个回答
1
投票

[当我尝试您的程序时,我收到一条警告,说:“将输入数据剪切为有效范围以显示带RGB数据的imshow(浮点数为[0..1],整数为[0..255]。”


0
投票

在这里dog = mpimg.imread('1.jpg')中,您将dog分配给图像数据,该数据是每个像素reference的颜色值,然后将每个像素乘以255,并将结果分配给结果图像的每个像素值。这就是为什么它具有这种颜色。(负图)

© www.soinside.com 2019 - 2024. All rights reserved.