将图像粘贴到另一个不同大小的图像上。在python中的matlibplot上显示

时间:2017-11-21 16:41:05

标签: python image matplotlib python-imaging-library

我是python的新手,我编写了以下python代码,将spot.jpg粘贴到坐标(2,3)上的background.jpg,因为background.jpg位于范围[0,20,0] ,16]。两幅图像都有不同的尺寸。

{{1}}

结果为matlibplot results

我在这里看到3个问题。

  1. 如果我不放弃zoom = 0.1(无论如何我猜的数字),spot.jpg将比background.jpg大得多。实际上,距离小于1米乘1米,背景为20米乘16米。如果我需要放一个数字来放大以便将两个图像放到相同的比例,那么数字应该是多少或者如何计算数字呢?

  2. 当我放大matplotlib结果时,spot.jpg似乎没有变大。 zooming into spot on plot。我想知道为什么。

  3. 斑点的图像质量会受到影响。反正有没有改善spot.jpg在情节上的表现?

  4. 非常感谢提前帮助像我这样的菜鸟。

1 个答案:

答案 0 :(得分:0)

使用偏移盒可能不是这里的好方法。您似乎希望将两个图像放在相同的数据坐标中。因此,根据所需的位置,将两个图像绘制为imshow,具有不同的范围。

import matplotlib.pyplot as plt

# imbg is layout/ background
imbg = plt.imread(r"data/room.jpg")
# imfg is furniture/ foreground
imfg = plt.imread(r"data/spot.jpg")

# manually set aspect dimension for background
ext= [0,20,0,16]

fig, ax = plt.subplots()
ax.imshow(imbg, zorder= 0, extent=ext )
ax.imshow(imfg, zorder= 1, extent=[2,5,3,6] )
ax.axis(ext)

plt.xlabel("Dimensions", fontsize= 12)
plt.title('Proposed', fontsize= 20)

plt.show()

enter image description here

椅子的范围在这里也是相当随意的,但你会更清楚地知道放在哪里以及尺寸。