错误-215 trainDescCollection [iIdx] Python OpenCV

时间:2013-12-06 19:51:18

标签: python opencv surf sift

我正在匹配两张图片,并且在80%的案例中都有效,但在某些情况下,它会崩溃并显示此消息:

  

... matches = matcher.match(d1,d2)错误:   ...... \ opencv-2.4.6 \ modules \ features2d \ src \ matchers.cpp:365:错误:   (-215)trainDescCollection [iIdx] .rows< IMGIDX_ONE

其中d1d2是两个图像的描述符。我在谷歌搜索但没有找到答案。也许这是一个愚蠢的错误,但我在这个领域是一个菜鸟。

此外,我在本网站上读到以下声明:'它仅适用于SIFT和SURF描述符(非自由)'。你知道SIFT和SURF是否受版权保护吗?

全部谢谢!

2 个答案:

答案 0 :(得分:3)

这是opencv中的一个漏洞。 https://github.com/Itseez/opencv/issues/5700

尝试使用较小的图像(例如,采用子集和/或下采样)。看起来该实现涉及一种棘手的(在贬义意义上)优化,该优化假设特征的数量(在一个图像中)小于一些魔力2。

答案 1 :(得分:-1)

你说得对!我得到了问题的一小部分(我想)。我把两个图像放在我遇到问题的地方,然后在另一台计算机上运行相同的代码。好吧,在另一个我没有得到错误。 在崩溃的那个我有这些包:

gdal 1.10.1
numpy 1.7.1
opencv-python 2.4.6
scipy 0.12.0

在我所拥有的那个:

...
gdal 1.9.2
numpy 1.6.2
opencv-python 2.4.3
scipy 0.11.0
...
scikit-image 0.7.2
scikit-learn 0.13.1
scipy 0.11.0
scipy-stack 12.11.29
simplecv 1.3
...

还有其他。更多:D。似乎我错过了一些东西,但我不知道它为什么会崩溃更新版本。现在我正在安装scipy-stack和scipy以及scikit-image ...也许错误是包丢失