私はcv :: Matに格納された画像から共分散行列を取得しようとしています。私はマハラノビスの距離を計算し、色分けを試みる必要があります。マルチチャネル画像と未定義アサーションエラーのcalcCovarMatrix
これは私のコードです:
Mat covar, selection, meanBGR;
selection = src(roi);
calcCovarMatrix(selection, covar, meanBGR, CV_COVAR_NORMAL|CV_COVAR_ROWS);
マットSRCはウェブカメラと標準BGRのOpenCVの形式なので、CV_32FC3からです。ピクセルは、行ベクトルの順序(青、緑、赤)で格納されて(私は思う)..だから私のコードは正しいと思います。しかし、私は、このランタイムエラーをrecive:
Assertion failed (src.channels() == 1) in 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);
が、私は常に同じエラーを取得します。 manualを読むことは何の考えもしません。
ありがとう明確な例ですが、そうですか?どのように皮膚分節化におけるマハラノビス距離の共分散行列を得るか?私は私の以前の質問のこの答えで説明されているメトスを参照しています:http://dsp.stackexchange.com/a/1634/1063 – nkint