我正在研究一个项目,将图像碎片与较大的碎片相匹配。例如,在下图中匹配Fragment to Complete。
继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做到这一点。
答案 0 :(得分:2)
如this question的回答所示,您需要提供第二个轴作为连接补丁的第一个参数,并将补丁添加到第二个轴,而不是第一个。
con = ConnectionPatch(xyA=xy2, xyB=xy1, coordsA="data", coordsB="data",
axesA=a2, axesB=a1, color="red")
a2.add_artist(con)