如何计算发现标记rajawali vuforia?

时间:2017-09-16 12:24:26

标签: marker vuforia rajawali

我想在rajawali vuforia上找到已找到标记的数量。

虽然我们有方法:

1- protected void foundFrameMarker(final int markerId, Vector3 position,Quaternion orientation) {} // this method is called when found any marker until the marker disappeared

2- public void noFrameMarkersFound() {} // this method is called when no markers appeared or found

如何使用这些方法来计算找到的标记?还是有另一种方法来计算?

2 个答案:

答案 0 :(得分:0)

每个帧在循环中为每个当前检测到的标记调用

foundFrameMarker。为了计算找到的标记,您应该在渲染器中添加一个int变量来计算它们。在渲染循环(onRenderFrame)的开头重置它,并在foundFrameMarker内增加它:

public void onRenderFrame(GL10 gl) {
   ... 
   mMarkerCount = 0;
   ...
 }

 protected void foundFrameMarker(int markerId, Vector3 position, Quaternion orientation) {
   mMarkerCount++;
   ...
 }

答案 1 :(得分:0)

@yakobom的答案解决了问题,但它重复计算每一帧,所以我添加了一些代码: 我初始化了另一个int以获得max到达的mMarkerCount计数,在onCreate(...)的活动类中我添加了一个计时器,每秒刷新一次以将其设置为TextFeild并重置最大

在onCreate的Activity类中:

    Thread t = new Thread() {

        @Override
        public void run() {
            try {
                while (!isInterrupted()) {
                    Thread.sleep(1000);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            te.setText(mRenderer.max+"");
                            mRenderer.max=0;
                        }
                    });
                }
            } catch (InterruptedException e) {
            }
        }
    };

    t.start();
在Renderer课上

protected void foundFrameMarker(int markerId, Vector3 position,
        Quaternion orientation) {

    ...

    mMarkerCount++;

    if (mMarkerCount > max)
        max = mMarkerCount;

    ...

}