Как рассчитать коварную матрицу для махадистании

Я пытаюсь реализовать дистанцию ​​махаланобисов, используя OpenCV и VC++ 2010.

Я знаю алгоритм для этого, функция.

(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);

Примечание: я вычисляю расстояние махаланобиса без квадратного корня, но вышеупомянутая функция делает квадратный корень, как получается, а также я возведу его в квадрат, чтобы сделать его справедливым, как я сделал то же самое, чтобы получить пороговое расстояние.

Спасибо

1 ответ

Решение

Первый аргумент должен быть 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)

Другие вопросы по тегам