Macos OpenCV-土方工程机械&x27;s距离问题,icvInitEMD()

Macos OpenCV-土方工程机械&x27;s距离问题,icvInitEMD(),macos,algorithm,opencv,Macos,Algorithm,Opencv,在Mac OS ML下的OpenCV 2.4.2中调用EMD()时遇到问题 我有一个类,它的属性Mat\u 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<flo

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

我有一个类,它的属性
Mat\u 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
    }
}
Mat_签名(尺寸,尺寸+1,CV_32F);

对于(int i=0;i好的,我花了相当长的时间才弄明白,但在我的数据中,有一个向量的分量计算错误,结果是
NaN
。 当然,这被深深地埋藏在我的数据中,因此它将完全丢失在通过调试器(甚至
cout
)可以合理观察到的任何数量的数据中

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

对于和我一样在同一个问题上绊倒的人:

  • 确保权重向量不为零
  • 确保没有任何数据是
    NaN

你确定调用emd时每个成员的签名都被正确分配/设置了吗?是的,我之前检查过,现在又检查了一遍。签名是正确的,应该是
size*(dim+1)
。很难说问题出在哪里,我想你可以在调试中编译OpenCV,然后使用调试器解决问题。。。