2
有些问题提到了同样的不可理解的例外,但我想用一个最简单的例子来清楚地问一下。在OpenCV中计算代码簿
我有以下代码:
- 负荷全部由文件SIFT描述;
- 规范描述符,如他们是CV_32F;
然后:
初始化BowTrainer(基于一个示例代码线上找到):
TermCriteria tc(CV_TERMCRIT_ITER,100,0.001); int retries=1; int flags=KMEANS_PP_CENTERS; BOWKMeansTrainer bow_trainer(dictionary_size, tc, retries, flags);
最后:
vocabulary = bow_trainer.cluster(training_descriptors);
其中training_descriptors
是一个1218772 * 128
CV_32F矩阵包含0,1归一化SIFT描述符。
不幸的是cluster
生成异常说:
OpenCV Error: Assertion failed (data.dims <= 2 && type == CV_32F && K > 0) in kmeans, file /Users/u/Downloads/OpenCV-2.4.4/modules/core/src/matrix.cpp, line 2686
类型的矩阵是正确的,即CV_32F
,我不明白他们data.dims应该< = 2,为什么它看起来像K < = 0.
嗨,我解决了这个问题,但不记得我做了什么。在我的情况下,有几个描述符。 – 2014-02-20 09:51:07