コード例 #1
0
ファイル: NyARTracker.cs プロジェクト: thaisrezendeb/brincAR
 /**
  * このターゲットをRectターゲットに遷移させます。
  * @param i_target
  * @param i_c
  * @return
  */
 private NyARTarget changeStatusToRect(NyARTarget i_target, NyARRectTargetStatus i_c)
 {
     Debug.Assert(i_target._st_type == NyARTargetStatus.ST_CONTURE);
     if (this._number_of_rect >= this.MAX_NUMBER_OF_RECT)
     {
         return(null);
     }
     i_target._st_type = NyARTargetStatus.ST_RECT;
     i_target._ref_status.releaseObject();
     i_target._status_life = LIFE_OF_RECT_FROM_CONTOUR;
     i_target._ref_status  = i_c;
     //カウンタ更新
     this._number_of_contoure--;
     this._number_of_rect++;
     return(i_target);
 }
コード例 #2
0
        /**
         * RectTargetを表示します。
         */
        private void drawRectTarget(NyARTarget t, Graphics sink)
        {
            Font f = new Font("System", 14);
            //サンプリング結果の表示
            NyARRectTargetStatus s = (NyARRectTargetStatus)t._ref_status;

            sink.DrawString("RT:" + t._serial + "(" + s.detect_type + ")" + "-" + t._delay_tick, f, Brushes.Cyan, new PointF(t._sample_area.x, t._sample_area.y));
            sink.DrawRectangle(Pens.Cyan, (int)s.vertex[0].x - 1, (int)s.vertex[0].y - 1, 2, 2);
            for (int i2 = 0; i2 < 4; i2++)
            {
//				g.fillRect((int)st.vecpos[i2].x-1, (int)st.vecpos[i2].y-1,2,2);
                sink.DrawLine(Pens.Cyan,
                              (int)s.vertex[i2].x,
                              (int)s.vertex[i2].y,
                              (int)s.vertex[(i2 + 1) % 4].x,
                              (int)s.vertex[(i2 + 1) % 4].y);
            }
        }
コード例 #3
0
ファイル: NyARTracker.cs プロジェクト: thaisrezendeb/brincAR
        /**
         * NyARTrackerOutのCOntourTargetについて、アップグレード処理をします。
         * アップグレードの種類は以下のにとおりです。1.一定期間経過後の破棄ルート(Ignoreへ遷移)2.正常認識ルート(Rectへ遷移)
         * @param i_base_raster
         * @param i_trackdata
         * @throws NyARException
         */
        private void upgradeContourTarget(NyARTarget i_contoure_target)
        {
            Debug.Assert(i_contoure_target._st_type == NyARTargetStatus.ST_CONTURE);
            if (i_contoure_target._status_life <= 0)
            {
                //一定の期間が経過したら、ignoreへ遷移
                this.changeStatusToIgnore(i_contoure_target, LIFE_OF_IGNORE_FROM_CONTOUR);
                return;
            }
            if (i_contoure_target._delay_tick > 20)
            {
                this.changeStatusToIgnore(i_contoure_target, LIFE_OF_IGNORE_FROM_CONTOUR);
                return;
                //一定の期間updateができなければ、ignoreへ遷移
            }

            NyARContourTargetStatus st = (NyARContourTargetStatus)i_contoure_target._ref_status;
            //coordステータスを生成
            NyARRectTargetStatus c = this.rect_pool.newObject();

            if (c == null)
            {
                //ターゲットがいっぱい。
                return;
            }
            //ステータスの値をセット
            if (!c.setValueWithInitialCheck(st, i_contoure_target._sample_area))
            {
                //値のセットに失敗した。
                c.releaseObject();
                return;
            }
            if (this.changeStatusToRect(i_contoure_target, c) == null)
            {
                //ターゲットいっぱい?
                c.releaseObject();
                return;
            }
            return;
        }
コード例 #4
0
ファイル: NyARTracker.cs プロジェクト: thaisrezendeb/brincAR
        public static void updateRectStatus(NyARTargetList i_list, INyARVectorReader i_vecreader, NyARRectTargetStatusPool i_stpool, LowResolutionLabelingSamplerOut.Item[] source, int[] index)
        {
            NyARTarget[] rct = i_list.getArray();
            NyARTarget   d_ptr;

            //ターゲットの更新
            for (int i = i_list.getLength() - 1; i >= 0; i--)
            {
                d_ptr = rct[i];
                //年齢を加算
                d_ptr._status_life--;
                //新しいステータスの作成
                NyARRectTargetStatus st = i_stpool.newObject();
                if (st == null)
                {
                    //失敗(作れなかった?)
                    d_ptr._delay_tick++;
                    continue;
                }
                int sample_index = index[i];
                LowResolutionLabelingSamplerOut.Item s = sample_index < 0?null:source[sample_index];
                if (!st.setValueByAutoSelect(i_vecreader, s, (NyARRectTargetStatus)d_ptr._ref_status))
                {
                    st.releaseObject();
                    d_ptr._delay_tick++;
                    continue;
                }
                else
                {
                    if (s != null)
                    {
                        d_ptr.setSampleArea(s);
                    }
                }
                d_ptr._ref_status.releaseObject();
                d_ptr._ref_status = st;
                d_ptr._delay_tick = 0;
            }
        }