我正在使用sift实现以及在“用Python编程计算机视觉”中找到的代码。
在vision.py中使用vision.py函数(相当于图书中的plot_matches()函数)时,所绘制的一些点甚至不在图像上:

正如你所看到的,大部分的点都不在图像上。
这可能是我必须对plotMatches()函数进行更改的结果:
for i, m in enumerate(matchscores):
if i > 0:
lab.plot([locs1[i][1], locs2[i][1] + cols1],
[locs1[i][0], locs2[i][0]], 'c')原始代码:
for i, m in enumerate(matchscores):
if i > 0:
lab.plot([locs1[i][1], locs2[m][1] + cols1],
[locs1[i][0], locs2[m][0]], 'c')将引发以下错误:
Traceback (most recent call last):
File "/home/peter-brown/AI/Markus/ImageRecognition.py", line 37, in <module>
sch.plotMatches(image, image2, l1, l2, matches, show_below=False)
File "/home/peter-brown/AI/Markus/vision.py", line 199, in plotMatches
lab.plot([locs1[i][1], locs2[m][1] + cols1],
IndexError: index 1 is out of bounds for axis 0 with size 1通过更改代码中使用的“m”,程序将正常工作,但它的输出将不正确。
为什么输出与图像不相对应,以及如何将plotMatches函数更改为工作?
发布于 2016-04-27 20:50:54
在matplotlib中,x和y坐标被翻转。从您的图像看,您将所有x坐标解释为y坐标,反之亦然。从您的功能来看,这是一个简单的更改:
for i, m in enumerate(matchscores):
if i > 0:
lab.plot([locs1[i][0], locs2[i][0] + cols1],
[locs1[i][1], locs2[i][1]], 'c')https://stackoverflow.com/questions/36824899
复制相似问题