Python. Matplotlib 反色图像

10

我不知道这里错在哪里。

import matplotlib.pyplot as plt

im = plt.imshow(plt.imread('tas.png'))
plt.show()

而Y轴已经被反转。
所以我写了一个参数 origin='lower'

im = plt.imshow(plt.imread('tas.png'), origin='lower')
plt.show()

我所拥有的,Y轴正常,但是图像现在已经被倒置了。

当我尝试重新缩放X和Y轴时,图像没有变小,只是被剪切了一部分。

提前感谢您的帮助,我会非常感激。


当我使用你的代码时,一切都正常。你使用的是哪个版本的Python/Matplotlib?另外,在你的问题中,第二个“inverted”是否与第一个意思相同? - Bula
我知道代码运行得很好,但不正确。在代码的第一部分中,图像看起来正确,但Y轴从100到0。当我写了一个参数(origin = 'lower'或ax = plt.gca() ax.invert_yaxis()),Y轴变成了从0到100,但图像将被反转。 - Protoss Reed
1个回答

21
你遇到了图像编码方式的一个特殊情况。由于历史原因,图像的原点是左上角(就像二维数组的索引一样...想象一下只打印出一个数组,你的数组的第一行就是图像的第一行,以此类推)。
使用origin=lower可以有效地翻转图像(如果你要在图像上绘制东西很有用)。如果你想翻转图像并使其“正立”,同时保持底部为原点,则需要在调用imshow之前翻转图像。
 import numpy as np
 im = plt.imshow(np.flipud(plt.imread('tas.png')), origin='lower')
 plt.show()

+1。或者,OP可以反转刻度标签,但这远非理想的解决方案。 - Paul H
@PaulH 手动反转刻度只会在以后绘制图像或从任何类型的图像处理中获取坐标时引起问题。 - tacaswell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接