【发布时间】: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