gpt4 book ai didi

Python:绘制筛选点返回图片上的点

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:38 29 4
gpt4 key购买 nike

我正在使用 sift 实现以及“使用 Python 进行计算机视觉编程”中的代码。

在vision.py中使用plotMatches函数(相当于书中的plot_matches()函数)时,一些绘制的点甚至不在图像上: Output of the results

正如您所看到的,大多数点都不在任何一个图像上。

这可能是我必须对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中,xy坐标被翻转。从您的图像来看,您似乎将所有 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')

关于Python:绘制筛选点返回图片上的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36824899/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com