/** * この関数は、ARToolKitスタイルのマーカーをストリームから読みだして、登録します。 * @param i_stream * マーカデータを読み出すストリーム * @param i_patt_edge_percentage * エッジ割合。ARToolkitと同じ場合は25を指定します。 * @param i_marker_size * マーカの平方サイズ[mm] * @return * マーカID(ハンドル)値。 * @throws NyARException */ public int addARMarker(StreamReader i_stream, int i_patt_resolution, int i_patt_edge_percentage, double i_marker_size) { NyARCode c = new NyARCode(i_patt_resolution, i_patt_resolution); c.loadARPatt(i_stream); return(this.addARMarker(c, i_patt_edge_percentage, i_marker_size)); }
/** * この関数は、ARToolKitスタイルのマーカーをファイルから読みだして、登録します。 * @param i_stream * マーカデータを読み出すストリーム * @param i_patt_edge_percentage * エッジ割合。ARToolkitと同じ場合は25を指定します。 * @param i_marker_size * マーカの平方サイズ[mm] * @return * マーカID(ハンドル)値。 * @throws NyARException */ public int addARMarker(String i_file_name, int i_patt_resolution, int i_patt_edge_percentage, double i_marker_size) { NyARCode c = new NyARCode(i_patt_resolution, i_patt_resolution); try{ c.loadARPatt(new StreamReader(i_file_name)); }catch (Exception e) { throw new NyARException(e); } return(this.addARMarker(c, i_patt_edge_percentage, i_marker_size)); }
/** * ARToolkit準拠のパターンファイルからパターンコードを生成して、テーブルへ追加します。 * @param i_filename * @param i_id * このマーカを識別するユーザ定義のID値です。任意の値を指定できます。不要な場合は0を指定してください。 * @param i_name * ユーザ定義の名前です。任意の値を指定できます。不要な場合はnullを指定して下さい。 * @param i_width * マーカの高さ[通常mm単位] * @param i_height * マーカの幅[通常mm単位] * @return * @throws NyARException */ public bool addMarkerFromARPatt(StreamReader i_stream, int i_id, String i_name, double i_width, double i_height) { MarkerTable.SerialTableRow d = this._table.prePush(); if (d == null) { return(false); } NyARCode c = new NyARCode(this._resolution_width, this._resolution_height); c.loadARPatt(i_stream); d.setValue(c, i_id, i_name, i_width, i_height); return(true); }
public void Test_arDetectMarkerLite() { Assembly assembly = Assembly.GetExecutingAssembly(); //AR用カメラパラメタファイルをロード NyARParam ap = new NyARParam(); ap.loadARParam(assembly.GetManifestResourceStream(RES_CAMERA)); ap.changeScreenSize(320, 240); //AR用のパターンコードを読み出し NyARCode code = new NyARCode(16, 16); Stream sr1 = assembly.GetManifestResourceStream(RES_PATT); code.loadARPatt(new StreamReader(sr1)); //試験イメージの読み出し(320x240 BGRAのRAWデータ) StreamReader sr = new StreamReader(assembly.GetManifestResourceStream(RES_DATA)); BinaryReader bs = new BinaryReader(sr.BaseStream); byte[] raw = bs.ReadBytes(320 * 240 * 4); NyARRgbRaster_BGRA ra = new NyARRgbRaster_BGRA(320, 240, false); ra.wrapBuffer(raw); // Blank_Raster ra=new Blank_Raster(320, 240); //1パターンのみを追跡するクラスを作成 // NyARSingleDetectMarker_Quad ar = new NyARSingleDetectMarker_Quad(ap, code, 80.0); NyARSingleDetectMarker ar = new NyARSingleDetectMarker(ap, code, 80.0, ra.getBufferType()); NyARTransMatResult result_mat = new NyARTransMatResult(); ar.setContinueMode(false); ar.detectMarkerLite(ra, 100); ar.getTransmationMatrix(result_mat); //マーカーを検出 for (int i3 = 0; i3 < 10; i3++) { Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 10; i++) { //変換行列を取得 ar.detectMarkerLite(ra, 100); ar.getTransmationMatrix(result_mat); } sw.Stop(); Debug.WriteLine(sw.ElapsedMilliseconds + "[ms]"); } return; }