pyplot 在 python 中显示调整大小的图像时出现问题
Trouble with pyplot displaying resized images in python
这是我的第一个堆栈溢出问题,如果不是很好请指正:
我目前正在 python 2.7 中将一堆灰度图像处理为 numpy ndarrays (dtype=uint8)。当我使用 resized=misc.imresize(image,.1)
调整图像大小时,当我使用 pyplot 绘制时,生成的图像有时会显示不同的灰度级。这是我的代码的样子。我会 post 结果的图像,但我还没有声望点数:
import cv2
from scipy import misc
from matplotlib import pyplot as plt
image=cv2.imread("gray_image.tif",cv2.CV_LOAD_IMAGE_GRAYSCALE)
resize=misc.imresize(image,.1)
plt.subplot(1,2,1),plt.imshow(image,"gray")
plt.subplot(1,2,2),plt.imshow(resize,"gray")
plt.show()
如果我将图像写入文件,灰度显示正常。
如果我使用 numpy 比较平均灰度级:
np.average(image)
和 np.average(resized)
,
平均灰度值与人们预期的大致相同。
如果我用 cv2.imshow 显示图像,灰度显示正常。
这不仅是调整图像大小的问题,而且当我将图像添加在一起时(当一个图像的大部分是黑色并且不应该使生成的图像变暗时),以及当我构建一个逐像素图像,例如:
import numpy as np
image_copy = np.zeros(image.shape)
for row in range(image.shape[0]):
for col in range(image.shape[1]):
image_copy[row,col]=image[row,col]
plt.imshow(image_copy,"gray") #<-- Will sometimes show up darker than original image
plt.show()
有人知道会发生什么吗?
对于这个问题的冗长和不明确,我深表歉意。
imshow
会自动缩放颜色信息以适应整个可用范围。调整大小后,颜色范围变小,导致外观颜色发生变化(而不是实际值,这解释了为什么保存的图像效果很好)。
您可能想告诉 imshow
不要缩放颜色。这可以使用 vmin
和 vmax
参数作为 explained in the documentation 来完成。您可能想使用 plt.imshow(image, "gray", vmin=0, vmax=255)
之类的东西来实现不变的外观。
这是我的第一个堆栈溢出问题,如果不是很好请指正:
我目前正在 python 2.7 中将一堆灰度图像处理为 numpy ndarrays (dtype=uint8)。当我使用 resized=misc.imresize(image,.1)
调整图像大小时,当我使用 pyplot 绘制时,生成的图像有时会显示不同的灰度级。这是我的代码的样子。我会 post 结果的图像,但我还没有声望点数:
import cv2
from scipy import misc
from matplotlib import pyplot as plt
image=cv2.imread("gray_image.tif",cv2.CV_LOAD_IMAGE_GRAYSCALE)
resize=misc.imresize(image,.1)
plt.subplot(1,2,1),plt.imshow(image,"gray")
plt.subplot(1,2,2),plt.imshow(resize,"gray")
plt.show()
如果我将图像写入文件,灰度显示正常。
如果我使用 numpy 比较平均灰度级:
np.average(image)
和 np.average(resized)
,
平均灰度值与人们预期的大致相同。
如果我用 cv2.imshow 显示图像,灰度显示正常。
这不仅是调整图像大小的问题,而且当我将图像添加在一起时(当一个图像的大部分是黑色并且不应该使生成的图像变暗时),以及当我构建一个逐像素图像,例如:
import numpy as np
image_copy = np.zeros(image.shape)
for row in range(image.shape[0]):
for col in range(image.shape[1]):
image_copy[row,col]=image[row,col]
plt.imshow(image_copy,"gray") #<-- Will sometimes show up darker than original image
plt.show()
有人知道会发生什么吗?
对于这个问题的冗长和不明确,我深表歉意。
imshow
会自动缩放颜色信息以适应整个可用范围。调整大小后,颜色范围变小,导致外观颜色发生变化(而不是实际值,这解释了为什么保存的图像效果很好)。
您可能想告诉 imshow
不要缩放颜色。这可以使用 vmin
和 vmax
参数作为 explained in the documentation 来完成。您可能想使用 plt.imshow(image, "gray", vmin=0, vmax=255)
之类的东西来实现不变的外观。