C++ OpenCV马氏函数用于计算两幅图像之间的距离
我正在使用OpenCV测试从同一环境中拍摄的两幅图像之间的相似性 我有一系列相同移动环境的照片。因此,作为A和B这两个二值图像的边缘的两个连续图像的环境,我做如下:C++ OpenCV马氏函数用于计算两幅图像之间的距离,c++,opencv,computer-vision,C++,Opencv,Computer Vision,我正在使用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_8U
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);
马氏距离函数抛出如下错误:
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);
OpenCV错误:Mahalanobis中的断言失败type==v2.type&&type==icovar.type&&sz==v2.size&&len==icovar.rows&&len==icovar.cols,file/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:error:-215 type==v2.type&&type==icovar.type&&sz==v2.size&len==icovar.rows&&len==icovar.cols函数中的icovar.cols
我很想知道我错在哪里。提前感谢。您在代码中混合了a和ma,b和mb。您是否尝试过马哈拉诺比斯玛、mb、icovar?符合文档:
A和B必须是1D数组而不是矩阵对不起,只有A和B,只是一个输入错误,大小和马氏体是用相同的矩阵计算的