图像识别对Wikitude中的多个目标图像无法正常工作

时间:2015-11-16 19:37:34

标签: javascript android wikitude

我正在使用Wikitude SDK制作增强现实应用。在图像识别时,我在扫描图像的顶部显示2D图像。需要对需要扫描的多个图像重复此过程。

我尝试了以下方法,但未能获得结果。 方法1:

我将所有需要扫描的图像的名称(目标图像)存储在一个数组中,并将该数组作为参数传递给一个已经完成的现实函数 AR.Trackable2DObject如下所述:

var arr1 = [" Mango"," Guava"," Papaya"," Banana"];

for(var i = 0; i< 4; i ++)

  {

   var getTargetName1= new AR.Trackable2DObject(this.tracker, arr1[i], 

{

          drawables: {

            cam: [new AR.ImageDrawable(new  

          AR.ImageResource("assets/"+arr1[i]+".png"), 1, {

         offsetX: -0.15,

         offsetY: 0,

        onClick:function(arObject)
        {

        }
    })]
        },
         onEnterFieldOfVision:function(targetName)
      {
         // arr.push(targetName);
        alert(targetName);

        //alert("assets/"+targetName+".png");

      },onExitFieldOfVision: function onExitFieldOfVisionFn() {


      }           
      });
  }

在上面的案例中,AR.Trackable2DObject被创建,在图像识别时,数组的元素与跟踪器的元素进行比较(两者都作为参数传递给上面的AR对象)并且基于任何匹配,2D drawable被覆盖使用AR.ImageDrawable对象。 上述方法的问题是AR.Trackable2DObject在将其与跟踪器进行比较时无法读取阵列中的所有元素。因此,在图像识别成功之后,不会覆盖任何2D可绘制的。 如果有人可以解释AR.Trackable2DObject函数调用如何与数组一起工作?

请回复我可以为您的回复提供更多意见。

1 个答案:

答案 0 :(得分:0)

当你的目标档案中有多个目标图像并且你只有一个叠加图像时,你不能将整个档案作为参数传递,你可以传递第二个参数:" *" 。这意味着在目标档案显示overlayOne的任何图片上。

var pageOne = new AR.Trackable2DObject(this.tracker, "*", {
        drawables: {
            cam: overlayOne
        }
    });

如果您只想在某些图像上构建此叠加层,而不是在所有图像上构建此叠加层,请在wtc文件中创建命名约定。例如,而不是" apple"和"香蕉"将它们命名为" word_apple"和" word_banana"。并在AR.Trackable2DObject中传递第二个参数" word _ *"。

P.S。它不适用于数组。