首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:绘制sift点返回图片中的点

Python:绘制sift点返回图片中的点
EN

Stack Overflow用户
提问于 2016-04-24 15:08:40
回答 1查看 84关注 0票数 1

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

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

正如你所看到的,大部分的点都不在图像上。

这可能是我必须对plotMatches()函数进行更改的结果:

代码语言:javascript
复制
        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')

原始代码:

代码语言:javascript
复制
        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')

将引发以下错误:

代码语言:javascript
复制
    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函数更改为工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-27 20:50:54

matplotlib中,xy坐标被翻转。从您的图像看,您将所有x坐标解释为y坐标,反之亦然。从您的功能来看,这是一个简单的更改:

代码语言:javascript
复制
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')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36824899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档