错误-215 trainDescCollection[iIdx] Python OpenCV

use*_*816 4 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是否受版权保护吗?

谢谢大家!

ben*_*min 6

这是 opencv 中的一个未解决的错误。 https://github.com/Itseez/opencv/issues/5700

尝试使用较小的图像(例如,采用子集和/或下采样)。看起来好像实现涉及一个棘手的(在贬义意义上)优化,它假设特征的数量(在一张图像中)小于某个神奇的二的幂。