1

opencv で行列を反転しようとしています。ビルド エラーはありませんが、「サポートされていない形式または形式の組み合わせ () が不明な関数にあり、ファイル ..\..\..\..\ocv\opencv\modules\core\src\lapack.cpp, 1469 行目」ですが、何が間違っているのかを理解するのにあまり役に立ちません。私は次のコードを使用しています:

Mat centerPointsMat = Mat(5, 3, CV_32SC2);
Mat centerPointsMatInv = Mat(5, 3, CV_32SC2);
for(int i=0; i<5; i++)
{
    Point p1=Point(0,i);
    centerPointsMat.at<float>(p1) = ((CvPoint*)CV_GET_SEQ_ELEM(CvPoint,centerPointsSeq,i))->x^2;
    Point p2=Point(1,i);
    centerPointsMat.at<float>(p2) = ((CvPoint*)CV_GET_SEQ_ELEM(CvPoint,centerPointsSeq,i))->x;
    Point p3=Point(2,i);
    centerPointsMat.at<float>(p3) = 1;
}
centerPointsMatInv = centerPointsMat.inv(1);

inv() の代わりに invert() を使用すると、同じ結果が得られます。

私は何が欠けていますか?

ありがとう。

4

3 に答える 3

4

逆行列を持つことができるのは、特異でない正定行列のみです。

詳しくはこちらのページをご覧ください

于 2012-04-08T15:48:58.177 に答える
2

ここで指摘された vasile のように、invert() は double または float の行列型のみをサポートします。マトリックス タイプを CV_32SC2 から CV_32FC1 に変更すると、解決したようです。

于 2012-04-10T07:08:11.873 に答える