現在地 >> メニュー >> サンプルコード::OpenCV >> 逆行列


問題


以下の行列の逆行列を求め、出力せよ。

1,2,1,
2,3,1,
1,2,2

その他条件:
 「ピボット選択によるガウスの消去法」を使用する。→ CV_LU を指定
 int型にキャストして出力。

答え


#include <cv.h>
#include <highgui.h>
#include <cstdio>

using namespace std;

float data[] =
{
1,2,1,
2,3,1,
1,2,2
};

int main( int argc, char **argv)
{

CvMat Matrix_A = cvMat (3,3, CV_32F, data);
CvMat *Matrix_ANSWER = cvCreateMat(3,3, CV_32F);


cvInvert(&Matrix_A, Matrix_ANSWER,CV_LU);


for(int i = 0;i<9;i++)
{
printf("answer[%d] = %d\n",i+1,(int)Matrix_ANSWER->data.fl[i]);
}

cvReleaseMat(&Matrix_ANSWER);


return 0;
}

メモ


関数が何をリターンするかで、ポインタ宣言になるかどうか変わる。

CvMat型はdata部分がunionで定義されている。
参考
http://opencv.jp/opencv/document/opencvref_cxcore_...


Matrix_ANSWERの方は、メモリを解放する。

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます