Python: plotting sift points returns points off 图片
Python: plotting sift points returns points off the pictures
我正在使用 sift 实现以及在 "Programming Computer Vision with Python" 中找到的代码。
虽然在 vision.py 中使用了 plotMatches 函数(相当于书中的 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 函数才能工作?
在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')
我正在使用 sift 实现以及在 "Programming Computer Vision with Python" 中找到的代码。
虽然在 vision.py 中使用了 plotMatches 函数(相当于书中的 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 函数才能工作?
在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')