c++ - 计算马哈拉诺比斯距离

标签 c++ opencv

从一堆图像 I 中,平均颜色 C_m 演变而来。现在我想获得一个距离图像,使用马哈拉诺比斯距离,其中计算每个像素到 C_m 的马哈拉诺比斯距离。我无法使用 OpenCV 的 Mahalanobis() 函数。 我使用 I 的所有像素颜色计算 calcCovarMatrix,将其反转并将其传递给 Mahalanobis()。接下来我遍历新图像以计算每个像素的距离:

  Mat covar, incovar, mean;
  calcCovarMatrix(...);
  invert(covar,incovar,DECOMP_SVD);

  for (int row = 0; row < image.rows; ++row) {
        for (int col = 0; col < image.cols; ++col) {
            Scalar color = image.at<Vec3b>(row, col);
        double m_dist = Mahalanobis(color, mean, incovar);
        }
  }

导致: OpenCV 错误:断言失败(type == v2.type() && type == icovar.type() && sz == v2.size() && len == icovar.rows && len == icovar.cols)在 Mahalanobis 中,文件/tmp/opencv-8GA996/opencv-2.4.9/modules/core/src/matmul.cpp,

我这里有什么错误?提前致谢!

最佳答案

Mahalanobis不适用于单个像素,但适用于整个图像。所以改为尝试:

double dist = Mahalanobis( image1, image2, invcovar );

关于c++ - 计算马哈拉诺比斯距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993676/

相关文章:

ios - OpenCV : wrapPerspective on whole image

opencv - 人脸识别(二维数组)置信度公式推导

python - 如何使用 OpenCV 删除小的连接对象

c++ win32如何重命名文件夹/目录

c++ - 我如何检查 firebreath 插件中的内存泄漏

c++ - 将 vec3b 转换为 mat

c++ - C++ 中的值访问

c++ - OpenCV 中的错误类 BackgroundSubtractorMOG2

c++ - 在 C++ 中传递具有多个条目的结构

python-2.7 - 从 Flask 服务器访问客户端网络摄像头