【发布时间】:2015-05-01 22:16:19
【问题描述】:
这是我的第一个堆栈溢出问题,如果不是很好,请纠正我:
我目前正在 python 2.7 中将一堆灰度图像处理为 numpy ndarrays (dtype=uint8)。当我使用resized=misc.imresize(image,.1) 调整图像大小时,当我使用 pyplot 绘制它时,生成的图像有时会显示为不同的灰度级。这是我的代码的样子。我会发布结果的图片,但我还没有声誉积分:
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()
有人知道会发生什么吗?
对于这个问题的冗长和不够明确,我深表歉意。
【问题讨论】:
标签: python opencv numpy matplotlib scipy