2

EMD()在 Mac OS ML 下调用 OpenCV 2.4.2 时遇到问题。

我有一个类,其属性Mat _signature定义如下:

Mat _signature(size,dim+1,CV_32F);
for (int i = 0; i<size; ++i){
    _signature.at<float>(i,0) = weight;
    for (int j = 1; j < dim+1; ++j){
       _signature.at<float>(i,j) = vec[i].at<float>(0,j-1); // vec[i] is a line vector containing the position in R^dim
    }
}

然后我有那个类uv2 个实例,当我打电话时EMD(u._signature, v._signature, CV_DIST_L2);

它失败了OpenCV Error: One of arguments' values is out of range () in icvInitEMD, file /*SOME PATH*/OpenCV-2.4.2/modules/imgproc/src/emd.cpp, line 408

我查看了源代码,但无法弄清楚这是什么失败。我的论点与文档的要求相对应。任何帮助将不胜感激。

4

1 回答 1

2

好的,我花了很长时间才弄清楚,但在我的数据中,我的一个向量的一个分量被错误计算,最终成为NaN. 当然,这已深埋在我的数据中,因此它会完全丢失在通过调试器(甚至cout)可合理观察到的任何数量的数据中

来自 OpenCV 的神秘错误让我感到困惑。

对于那些和我一样遇到同样问题的人:

  • 确保您的权重向量不为零
  • 确保没有您的数据NaN
于 2012-11-12T20:31:08.827 回答