我正在尝试使用OpenCV和VC ++ 2010实现 mahalanobis距离。
我知道它的算法,即函数。
(x-mean)^T*inv(covarmatrix)*(x-mean)
但是当我在OpenCV中实现它时,它只会反复出错。
这是我计算协方差矩阵的代码。
int Main(){
Mat Image;
Mat, Cov,mean;
float samples=1920000;
calcCovarMatrix(image,samples,covmat,mean,CV_COVAR_NORMAL);
}
calcCovarMatrix
给出错误:
no instance of overloaded function calcCovarMatrix matches the argument list.
然后我会做
vec3b pixel;
icovar=covmat^-1;
mdist = mahalanobis(vec3b,mean,icovar);
注意:我计算没有平方根的马哈拉诺比斯距离,但是上面的函数确实是平方根,为什么我会将它调到正确,因为我做了同样的事情以获得阈值距离。
感谢
答案 0 :(得分:2)
第一个参数应该是Mat *所以它应该是& image
参见http://docs.opencv.org/2.4.4/modules/core/doc/operations_on_arrays.html#void calcCovarMatrix(const Mat * samples,int nsamples,Mat& covar,Mat& mean,int flags,int ctype)