コード例 #1
0
 /**
  * ARTKパターンコードを、テーブルに追加します。このパターンコードのメタデータとして、IDと名前を指定できます。
  * @param i_code
  * ARToolKit形式のパターンコードを格納したオブジェクト。このオブジェクトは、関数成功後はインスタンスに所有されます。
  * パターンコードの解像度は、コンストラクタに指定した高さと幅である必要があります。
  * @param i_id
  * このマーカを識別するユーザ定義のID値です。任意の値を指定できます。不要な場合は0を指定してください。
  * @param i_name
  * ユーザ定義の名前です。任意の値を指定できます。不要な場合はnullを指定して下さい。
  * @param i_width
  * マーカの高さ[通常mm単位]
  * @param i_height
  * マーカの幅[通常mm単位]
  * @return
  */
 public bool addMarker(NyARCode i_code, int i_id, String i_name, double i_width, double i_height)
 {
     Debug.Assert(i_code.getHeight() == this._resolution_height && i_code.getHeight() == this._resolution_width);
     MarkerTable.SerialTableRow d = this._table.prePush();
     if (d == null)
     {
         return(false);
     }
     d.setValue(i_code, i_id, i_name, i_width, i_height);
     return(true);
 }
コード例 #2
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 = NyARCode.createFromARPattFile(i_stream, this._resolution_width, this._resolution_height);

            d.setValue(c, i_id, i_name, i_width, i_height);
            return(true);
        }
コード例 #3
0
        /**
         * i_rasterからパターンコードを生成して、テーブルへ追加します。
         * @param i_raster
         * @param i_id
         * このマーカを識別するユーザ定義のID値です。任意の値を指定できます。不要な場合は0を指定してください。
         * @param i_name
         * ユーザ定義の名前です。任意の値を指定できます。不要な場合はnullを指定して下さい。
         * @param i_width
         * マーカの高さ[通常mm単位]
         * @param i_height
         * マーカの幅[通常mm単位]
         * @return
         * @throws NyARException
         */
        public bool addMarker(NyARRgbRaster i_raster, 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.setRaster(i_raster);
            d.setValue(c, i_id, i_name, i_width, i_height);
            return(true);
        }
コード例 #4
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 addMarkerFromARPattFile(String i_filename, 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.loadARPattFromFile(i_filename);
            d.setValue(c, i_id, i_name, i_width, i_height);
            return(true);
        }
コード例 #5
0
        /**
         * RealityTargetに最も一致するパターンをテーブルから検索して、メタデータを返します。
         * @param i_target
         * Realityが検出したターゲット。
         * Unknownターゲットを指定すること。
         * @param i_rtsorce
         * i_targetを検出したRealitySourceインスタンス。
         * @param o_result
         * 返却値を格納するインスタンスを設定します。
         * 返却値がtrueの場合のみ、内容が更新されています。
         * @return
         * 特定に成功すると、trueを返します。
         * @throws NyARException
         */
        public bool getBestMatchTarget(NyARRealityTarget i_target, NyARRealitySource i_rtsorce, GetBestMatchTargetResult o_result)
        {
            //パターン抽出
            NyARMatchPattResult  tmp_patt_result = this.__tmp_patt_result;
            INyARPerspectiveCopy r = i_rtsorce.refPerspectiveRasterReader();

            r.copyPatt(i_target.refTargetVertex(), this._edge_x, this._edge_y, this._sample_per_pix, this._tmp_raster);
            //比較パターン生成
            this._deviation_data.setRaster(this._tmp_raster);
            int    ret = -1;
            int    dir = -1;
            double cf  = Double.MinValue;

            for (int i = this._table.getLength() - 1; i >= 0; i--)
            {
                this._match_patt.setARCode(this._table.getItem(i).code);
                this._match_patt.evaluate(this._deviation_data, tmp_patt_result);
                if (cf < tmp_patt_result.confidence)
                {
                    ret = i;
                    cf  = tmp_patt_result.confidence;
                    dir = tmp_patt_result.direction;
                }
            }
            if (ret < 0)
            {
                return(false);
            }
            //戻り値を設定
            MarkerTable.SerialTableRow row = this._table.getItem(ret);
            o_result.artk_direction = dir;
            o_result.confidence     = cf;
            o_result.idtag          = row.idtag;
            o_result.marker_height  = row.marker_height;
            o_result.marker_width   = row.marker_width;
            o_result.name           = row.name;
            return(true);
        }