在python中绘制图像背景

2024-05-19 06:46:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用matplotlib在图像背景上绘制一个图形。我在matlab中找到了这个方法http://www.peteryu.ca/tutorials/matlab/plot_over_image_background

我试过这样的基本方法:

im = plt.imread("dd.png")
implot = plt.imshow(im)
theta=np.linspace(0,2*np.pi,50)
z=np.cos(theta)*39+145
t=np.sin(theta)*39+535-78+39
plt.plot(z,t)
plt.show()

但它给了我一些非常丑陋的东西:

something really ugly


Tags: 方法图像http图形plotmatplotlibwwwnp
1条回答
网友
1楼 · 发布于 2024-05-19 06:46:11

与链接到的MATLAB示例一样,在调用imshow时,必须指定图像的所需范围。

默认情况下,matplotlib和MATLAB都将图像的左上角作为原点,从那里向下和向右放置,并将每个像素设置为坐标空间中的1x1正方形。这就是你的形象。

您可以使用extent参数来控制它,该参数采用列表的形式[left, right, bottom, top]

不使用扩展数据块如下所示:

import matplotlib.pyplot as plt
img = plt.imread("airlines.jpg")
fig, ax = plt.subplots()
ax.imshow(img)

enter image description here

你可以看到,我们有一个1600×1200的塞缪尔·杰克逊,坦白地说,他对飞机上的蛇相当恼火。

但如果我们想在这上面画一条从0到300的直线,我们可以这样做:

fig, ax = plt.subplots()
x = range(300)
ax.imshow(img, extent=[0, 400, 0, 300])
ax.plot(x, x, '--', linewidth=5, color='firebrick')

enter image description here

我不知道这条线是否能帮助杰克逊先生解决蛇的问题。至少,这不会让事情变得更困难。

相关问题 更多 >

    热门问题