gpt4 book ai didi

macos - OpenCV - Earth Mover 的距离问题,ic​​vInitEMD()

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:52:25 24 4
gpt4 key购买 nike

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

我有一个类,其属性 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
}
}

然后我有该类的 uv 2 个实例,当我调用 EMD(u._signature, v._signature, CV_DIST_L2);

失败并显示 OpenCV 错误:其中一个参数的值超出范围 () in icvInitEMD,文件/*SOME PATH*/OpenCV-2.4.2/modules/imgproc/src/emd.cpp,行408

我查看了源代码,但无法弄清楚这是怎么回事。我的论点与文档想要的内容相对应。任何帮助将不胜感激。

最佳答案

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

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

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

  • 确保你的权重向量不为零
  • 确保您的数据都不是NaN

关于macos - OpenCV - Earth Mover 的距离问题,ic​​vInitEMD(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13260559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com