Я пытаюсь получить ковариационную матрицу из изображения, хранящегося в cv :: Mat.мне это нужно для вычисления расстояния махаланобисов и попытки некоторой цветовой сегментации.
это мой код:
Mat covar, selection, meanBGR;
selection = src(roi);
calcCovarMatrix(selection, covar, meanBGR, CV_COVAR_NORMAL|CV_COVAR_ROWS);
Источник Mat от веб-камеры и стандартного формата BGR opencv, поэтому CV_32FC3.пиксели хранятся (я думаю) в векторном порядке строк (синий, зеленый, красный) .. поэтому я думаю, что мой код правильный.но я получаю эту ошибку времени выполнения:
Утверждение не удалось (src.channels () == 1) в mulTransposed
Я тоже пытался создать вектор следующим образом:
vector<Scalar> samples;
for(int i=0; i<selection.rows; i++) {
for(int j=0; j<selection.cols; j++) {
Scalar pixel = selection.at<Scalar>(i,j);
Scalar sample(pixel[0], pixel[1], pixel[2]);
samples.push_back(sample);
}
}
calcCovarMatrix(samples, covar, meanBGR, CV_COVAR_NORMAL|CV_COVAR_ROWS);
но я всегда получаю одну и ту же ошибку.чтение руководства не дает никаких идей.