如何在matplotlib/Python中直接将散点图叠加在jpg图像上?

ely*_*ely 29 python plot overlay image matplotlib

我需要快速绘制jpg帧作为跟踪算法的输出结果.与jpg帧的伴侣是包含简单(x,y)数据的文本文件,其定位正被跟踪的图像目标.我想使用matplotlib绘制jpg图像,然后覆盖(x,y)数据的散点图,该数据从文本文件中读取并存储到Pythonic列表中.下面是将绘制jpg图像的代码,但在我所做的所有matplotlib,scipy和PIL手册和帮助页面的搜索中,我找不到任何解释如何维护此绘图窗口并简单地覆盖散点图图像中各个(x,y)位置的简单标记.任何帮助是极大的赞赏.

import matplotlib.pyplot as plt;
im = plt.imread(image_name);
implot = plt.imshow(im);
plt.show()
Run Code Online (Sandbox Code Playgroud)

lot*_*rio 45

由于pyplot.scatter()这个原因,该功能是量身定制的:

import matplotlib.pyplot as plt
im = plt.imread(image_name)
implot = plt.imshow(im)

# put a blue dot at (10, 20)
plt.scatter([10], [20])

# put a red dot, size 40, at 2 locations:
plt.scatter(x=[30, 40], y=[50, 60], c='r', s=40)

plt.show()
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档.


Pau*_*aul 10

这应该工作:

import matplotlib.pyplot as plt
im = plt.imread('test.png')
implot = plt.imshow(im)
plt.plot([100,200,300],[200,150,200],'o')
plt.show()
Run Code Online (Sandbox Code Playgroud)

请记住,图像中的每个像素都是x,y轴上的一个单位.的'o'是获得的简写方式plot功能,使用圈子,而不是行.


小智 8

我知道这已经得到了回答,但类似的zorder也可以.如果你想把一些东西放在散点图之上或之下,那就太好了

import matplotlib as plt
im = plt.imread(image_name)
plt.imshow(im,zorder=1)
plt.scatter(x,y,zorder=2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

较低的zorder意味着它低于其他东西