【发布时间】:2018-08-18 04:03:22
【问题描述】:
我有一个简单的任务要完成,但是我发现的当前保存功能对我一点帮助都没有。我所要做的只是将灰度图像转换为另一个具有属于较小间隔(特别是在 120 和 180 之间)的强度的图像。
我实现了转换(比如改变不同的温度标度),但是当我保存图像时,scipy.misc.imsave 将其标准化。转换是正确的,因为我创建了直方图来显示保存之前的强度,并且它们都位于指定范围之间。
我尝试过其他工具,例如:
imageio.imwrite(path, img)
numpy.save(path, img)
scipy.misc.toimage(img, cmin=120, cmax=180, mode='L').save(path)
我承认最后一个我不太了解参数(我有一个猜测),documentation 没有帮助。有人可以帮我解决这个问题吗?
编辑:我正在发布代码
def ex3():
I = misc.imread(imgname)
N = numpy.multiply(I , float(12.0/51.0))
N = numpy.add(N, 120)
NEG = I
NEG = numpy.add(NEG, -255)
NEG = numpy.absolute(NEG)
misc.imsave(path, N)
misc.imsave(os.getcwd()+"/a0/results/"+file.replace(path, NEG)
当我切换到 OpenCV 时,图像被完美渲染。但如果可能的话,我想坚持使用 Scipy。
【问题讨论】:
-
np.save不应向img添加任何规范化或更改(前提是ndarray)。 -
如果您发布失败的代码部分会有所帮助。使用
img = np.random.randn(...)之类的内容将您的数据替换为此示例的等效内容。 -
感谢您的回答。 @user2699 我更新了帖子。如果您有任何要求,请告诉我。 hpaulj,不幸的是我已经尝试使用 np.save,但我也得到了标准化图像。但我同意你的看法:它不应该那样做。
-
查看this question 和我的答案。
-
numpy.save不会对数据进行规范化,但也不会将数据保存为图像格式。
标签: python numpy image-processing scipy python-imageio