在matlibplot中绘制线条到不同坐标的线条

时间:2018-01-09 02:20:00

标签: python matplotlib

我正在研究一个项目,将图像碎片与较大的碎片相匹配。例如,在下图中匹配Fragment to Complete。Figure_1

this question之后,我试图在两个地块上画一条线来表示匹配点,每个点都有不同的坐标。

这是我的代码:

import matplotlib.pyplot as plt
from matplotlib.patches import ConnectionPatch
import numpy as np

(x1,y1) = (292, 21)
(x2,y2) = (930, 1111)

fig = plt.figure()

a1=fig.add_subplot(1,2,1)
imgplot = plt.imshow(fragment) #fragment is the name of the first image
a2=fig.add_subplot(1,2,2)
imgplot = plt.imshow(complete) #complete is the name of the second image

xy1 = (x1,y1)
xy2 = (x2,y2)
con = ConnectionPatch(xyA=xy1, xyB=xy2, coordsA="data", coordsB="data",
                  axesA=a1, axesB=a2, color="red")

a1.add_artist(con)

a1.plot(x1,y1,'ro',markersize=2)
a2.plot(x2,y2,'ro',markersize=2)
plt.show()

但是,生成的图像会出现在第二张图像后面的线条(如下所示)。我需要在代码中更改什么?

注意:我意识到我可以用OpenCV做到这一点。

Figure_2

1 个答案:

答案 0 :(得分:2)

this question的回答所示,您需要提供第二个轴作为连接补丁的第一个参数,并将补丁添加到第二个轴,而不是第一个。

con = ConnectionPatch(xyA=xy2, xyB=xy1, coordsA="data", coordsB="data",
                  axesA=a2, axesB=a1, color="red")

a2.add_artist(con)