当范围(0255)内的常规RGB图像被转换为浮点,然后由matplotlib显示时,该图像显示为负数。如果它被转换为uint8,它将正确显示(当然)。这给我弄清楚发生了什么事带来了一些麻烦,因为我不小心把其中一个图像投射成了float。
我很清楚,当转换为float时,图像应该在范围(0,1)内,并且当除以255时,显示的图像是正确的。但是,为什么在范围(0255)内被转换为浮点的图像会显示为负数?我会期望饱和度(全白)或自动推断范围从输入(从而正确显示)?如果这两种情况都发生了,我就能更快地调试代码。我已经包含了复制行为所需的代码。有人知道为什么会这样吗?
import numpy as np
import matplotlib.pyplot as plt
a = np.random.randint(0,127,(200,400,3))
b = np.random.randint(128,255,(200,400,3))
img=np.concatenate((a,b)) # Top should be dark ; Bottom should be light
plt.imshow(img) # Inverted
plt.figure()
plt.imshow(np.float64(img)) # Still Bad. Added to address sascha's comment
plt.figure()
plt.imshow(255-img) # Displayed Correctly
plt.figure()
plt.imshow(np.uint8(img)) # Displayed Correctly
plt.figure()
plt.imshow(img/255.0) # Displays correctly
目前没有回答
相关问题 更多 >
编程相关推荐