/**
         * この関数は、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));
        }
Ejemplo n.º 3
0
        /**
         * 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);
        }
Ejemplo n.º 4
0
        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;
        }