NyARToolKitのAPIメモ
caution! : 非公式です、間違ってる可能性もあります。また、このAPIメモはCPP版です。
大まかなながれ
事前準備
#define CODE_FILE "../../data/patt.hiro"//マーカのパターンファイル #define CAMERA_FILE "../../data/camera_para.dat"//カメラの設定データ NyARParam ar_param;//ARパラメータ NyARCode* ar_code;//マーカを格納したり NyARRgbRaster_BGRA* ar_raster;//画像を格納したり NyARSingleDetectMarker* ar_detectmerker;//マーカ検索に使う NyARTransMatResult result_mat;//結果行列
初期設定
ARパラメータ、マーカパターン(Code)、ラスタ、マーカ検出器の初期設定をする。
マーカ座標の検出
(1)~(3)がNyARToolKitが担当する部分
(0) 画像読み込み
(1) ラスタに画像読み込み (wrapBuffer)
(2) マーカ検出 (detect Marker)
(3) マーカ行列取得(getTransmationMatrix)
(4) マーカにCGを重ねて表示
(0) 画像読み込み
(1) ラスタに画像読み込み (wrapBuffer)
(2) マーカ検出 (detect Marker)
(3) マーカ行列取得(getTransmationMatrix)
(4) マーカにCGを重ねて表示
画像の取得はNyARToolKitの仕事ではないので別のライブラリ(例えば画像の取得にOpenCV、CG描画にOpenGL)を使う。
パラメータ(ARParam系)
NyARToolKit全体の設定をする。
エンディアン設定 : setEndian
ar_param.setEndian(TNyAREndian_LITTLE);//リトルエンディアンにエンディアンを設定
カメラパラメータ読み込み : loadARParamFromFile
ar_param.loadARParamFromFile(CAMERA_FILE);//カメラの設定ファイルを読み込み
スクリーンサイズ変更 : changeScreenSize
ar_param.changeScreenSize(frame->width, frame->height);
マーカ(NyARCode系)
マーカの設定をする
初期化
ar_code= new NyARCode(16, 16);
マーカの設定 : loadARPattFromFile
ar_code->loadARPattFromFile(CODE_FILE);
ラスター(Raster)
マーカ検出用に、マーカが写っている(予定の)画像を設定する。グレイスケール,RGB,BGRA,HSVがあるらしい。
BGRAラスター初期化 : NyARRgbRaster_BGRA
BGRA画像を読み込む
ar_raster = new NyARRgbRaster_BGRA(frame->width, frame->height,false);
ラスターに画像を設定 : wrapBuffer
ar_raster->wrapBuffer((NyARToolkitCPP::NyAR_BYTE_t*)image_bgra_ar->imageData);
マーカ検出(DetectMarker)
ラスタに設定した画像からマーカを検出する。
単一マーカ検出の初期化 : NyARSingleDetectMarker
ar_detectmerker = new NyARSingleDetectMarker(&ar_param, ar_code, 80.0,ar_raster->getBufferType());
モードの設定 : setContinueMode
ar_detectmerker->setContinueMode(false);
マーカ検索 : detectMarkerLite
detectMarkerLite(ラスタ、(int)しきい値)
ar_detectmerker->detectMarkerLite(*ar_raster, 100);
マーカ行列の取得 : getTransmationMatrix
ar_detectmerker->getTransmationMatrix(result_mat);
一致度の取得 : getConfidence
マーカの一致度を取得、double型で0~1の値。
ar_detectmerker->getConfidence();