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

image recognition not working properly for multiple target images in Wikitude

本文关键字:常工作 工作 图像识别 目标 Wikitude 图像      更新时间:2023-09-26

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

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

我将需要扫描的所有图像(目标图像)的名称存储在一个数组中,并将该数组作为参数传递给augmented reality函数AR.Trackable2下面提到的对象:

var arr1=["芒果"、"番石榴"、"木瓜"、"香蕉"];

对于(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对象),并基于任何匹配,使用AR.ImageDrawable对象覆盖2D可绘制图。上述方法的问题是AR.Tracke2DObject在将数组与跟踪器进行比较时无法读取数组中的所有元素。因此,在图像识别成功之后,WHich不覆盖任何2D可绘制图像。如果有人能解释对AR.Tracke2DObject的函数调用是如何与数组一起工作的?

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

当您的目标档案中有多个目标图像,而只有一个覆盖图像时,您不将整个档案作为参数传递,而是传递第二个参数:"*"。这意味着在目标档案的任何图片上显示overlayOne。

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

如果你想只在一些图像上构建这个覆盖,而不是在所有图像上,那么在你的wtc文件中制定一个命名约定。例如,将它们命名为"word_apple"answers"word_banana",而不是"苹果"answers"香蕉"。并且在AR.Trackeable2DObject中作为第二个参数"word_*"传递。

附言:它不适用于数组。