【问题标题】:OpenCV Mahalanobis function to calculate distance between two imagesOpenCV Mahalanobis 函数计算两幅图像之间的距离
【发布时间】:2015-04-10 03:37:52
【问题描述】:

我正在使用 OpenCV 测试从同一环境中拍摄的两张图像之间的相似性。

我有一系列相同移动环境的照片。因此,作为 A 和 B 两个二值图像的两个连续图像的边缘,我执行以下操作:

Mat mean;
mean.create(a.rows, a.cols, a.type());

mean += a;
mean += b;
mean/=2;

Mat covar, mean;

calcCovarMatrix(mean, covar, mean, COVAR_NORMAL | COVAR_ROWS, CV_8UC1);

Mat icovar = covar.inv();

std::cout<<"type a:"<<a.type()<<"\n";
std::cout<<"type b:"<<b.type()<<"\n";
std::cout<<"icovar type:"<<icovar.type()<<"\n";
std::cout<<"a cols:"<<a.cols<<"\n";
std::cout<<"a rows:"<<a.rows<<"\n";
std::cout<<"b cols:"<<b.cols<<"\n";
std::cout<<"b rows:"<<b.rows<<"\n";
std::cout<<"icovar cols:"<<icovar.cols<<"\n";
std::cout<<"icovar rows:"<<icovar.rows<<"\n";

double mahalDistance = Mahalanobis(a, b, icovar);

这些矩阵都是相同的类型,并且具有以下值:

type a:5
type b:5
icovar type:5
a cols:1280
a rows:400
b cols:1280
b rows:400
icovar cols:1280
icovar rows:1280

马氏距离函数报错如下:

OpenCV 错误:断言失败(type == v2.type() && type == icovar.type() && sz == v2.size() && len == icovar.rows && len == icovar.cols)在 Mahalanobis 中,文件 /Users/felipefujioka/Documents/Developer/tg/opencv-3.0.0-beta/modules/core/src/matmul.cpp,第 2486 行 libc++abi.dylib:以 cv::Exception 类型的未捕获异常终止:/Users/felipefujioka/Documents/Developer/tg/opencv-3.0.0-beta/modules/core/src/matmul.cpp:2486:错误: (-215) type == v2.type() && type == icovar.type() && sz == v2.size() && len == icovar.rows && len == icovar.cols in function Mahalanobis

我很想知道我错在哪里。提前致谢。

【问题讨论】:

    标签: c++ opencv computer-vision


    【解决方案1】:

    您在代码中将amabmb 混合使用。你试过Mahalanobis(ma, mb, icovar)吗?

    【讨论】:

    • 对不起,只有 A 和 B,只是一个错字,尺寸和马哈拉诺比斯是用相同的矩阵计算的
    【解决方案2】:
    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2021-05-26
    • 2020-02-20
    • 2017-12-05
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多