在OpenCV中计算码本
Computing codebooks in 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
,我不明白是谁的数据。dims应该是<=2,以及为什么它看起来像K <= 0。
碰巧我也得到了同样的错误。在我的例子中,这是因为描述符Mat里面没有元素。我怀疑这是什么数据。暗<= 2指。
OpenCV Error: Assertion failed (data.dims <= 2 && type == CV_32F && K > 0) in kmeans, file /home/ubuntu/opencv-2.4.5/modules/core/src/matrix.cpp, line 2686
是否检查了描述符数组是否为空?
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 从C++本机插件更新Vector3数组
- 递归函数计算序列中的平方和(并输出过程)
- 如何在本机C 中使用QML绘制QR码
- 计算本特征值的错误
- 使用OpenCv使用图像序列计算相机校准中的本征估计误差和外在误差
- 使用 CPP 中的值和掩码计算导数
- 如何在本机C/C 中用QT绘制QR码
- C++中的本码解析器
- MATLAB码与C(C++)与IPP码计算结果的区别
- 使用掩码计算 uint512 的位
- 以C++本征计算的SSE值与真实值不同
- Chris Hamilton的紧致希尔伯特码-用于计算紧致希尔伯特指数
- 在c++中使用由iOS本地库公开的C位掩码(匿名enum)
- 如何计算给定IPv4网络掩码的前缀长度
- 本征逆矩阵计算出错
- 在OpenCV中计算码本
- OpenCV背景减法/码本
- 尝试计算我的"sir"(字符串)类的 ASCII 码总和
- 最好的方法来计算最大掩码的sse var