【发布时间】:2019-05-03 07:09:18
【问题描述】:
我已将 tensorflow 对象检测 API 与 OpenCv 集成以跟踪框架内的人,以便 python 脚本可以绘制图表,显示人进入和退出框架的位置以及它在框架内移动的位置。
要绘制图形,我使用matplotlib。我有 x y 坐标,图表显示得非常好。现在我需要在该图的背景中放置一个图像。为此,我在下面做了:
image = mpimg.imread(file)
plt.imshow(image)
plt.plot(x, y)
plt.plot(x[0], y[0], 'og')
plt.plot(x[-1], y[-1], 'ob')
plt.show()
在上面的代码中,我正在读取作为图像的文件,然后将其显示在图表上。这样做会使我的最终图表看起来不好看,因为图像向上移动并且线图保持在下部,而我希望线图位于图像上。我提到了这个question,这是我想要实现的,但在我提到的问题中,解决方案解释了在图像上画一条线。在我的场景中,我必须绘制一个具有多个坐标的图形。
我尝试了参考问题中解释的解决方案,并在matplotlib 中显示图像时使用了extent,如下所示:
image = mpimg.imread(file)
plt.imshow(image, extent=[x[0], x[-1], y[0], y[-1]])
plt.plot(x, y)
plt.plot(x[0], y[0], 'og')
plt.plot(x[-1], y[-1], 'ob')
plt.show()
在上面的代码中,我使用了extent=[x[0], x[-1], y[0], y[-1]]),其中x[0], x[-1], y[0], y[-1] 表示x 和y 坐标的第一个和最后一个点,以便图像可以正确地适合图形。这样做,我得到以下结果:
如您所见,图像已正确拟合在图表中,但一旦我绘制了我的 x y 坐标,它看起来如下所示:
这不如图像上的线条好。我在这里很困惑,因为我做错了什么。我尝试遵循相同的参考答案并使用extent,但在绘制图像时向前移动了一点。以下是我的坐标:
x = [612, 590, 646, 712, 466, 475]
y = [623, 562, 557, 567, 530, 536]
绿点类似于开始,蓝点类似于结束。如果我不使用背景图像,下面是图表的图像。这里需要注意的一点是,x,y 坐标与上图不匹配,而仅与下图匹配(无背景图):
谁能告诉我我在这里做错了什么。请帮忙。谢谢
【问题讨论】:
-
我认为问题不是特别清楚。所有提到的坐标都正确地绘制在图中。假设图像需要在第一个坐标和最后一个坐标之间精确延伸是否合理,很难从外部判断。但是,如果这样做的决定是合理的,那么图像都是正确的。
标签: python matplotlib