2017-03-06 4 views
0

Je travaille sur la reconnaissance d'image simple dans Wikitude AR SDK. J'utilise Javascript SDK et j'ai lancé l'exemple de projet "01_ImageRecognition_1_ImageOnTarget". le code est comme ceci:Recadrer l'image reconnue dans Wikitude

var World = { 
    loaded: false, 

    init: function initFn() { 
     this.createOverlays(); 
    }, 

    createOverlays: function createOverlaysFn() { 
     /* 
      First an AR.ImageTracker needs to be created in order to start the recognition engine. It is initialized with a AR.TargetCollectionResource specific to the target collection that should be used. Optional parameters are passed as object in the last argument. In this case a callback function for the onTargetsLoaded trigger is set. Once the tracker loaded all its target images, the function worldLoaded() is called. 

      Important: If you replace the tracker file with your own, make sure to change the target name accordingly. 
      Use a specific target name to respond only to a certain target or use a wildcard to respond to any or a certain group of targets. 
     */ 
     this.targetCollectionResource = new AR.TargetCollectionResource("assets/bp2.wtc", { 
     }); 

     this.tracker = new AR.ImageTracker(this.targetCollectionResource, { 
      onTargetsLoaded: this.worldLoaded 
     }); 

     /* 
      The next step is to create the augmentation. In this example an image resource is created and passed to the 
      AR.ImageDrawable. A drawable is a visual component that can be connected to an IR target (AR.ImageTrackable) 
      or a geolocated object (AR.GeoObject). The AR.ImageDrawable is initialized by the image and its size. 
      Optional parameters allow for position it relative to the recognized target. 
     */ 

     /* Create overlay for page one */ 
     var imgOne = new AR.ImageResource("assets/imageOne.png"); 
     var overlayOne = new AR.ImageDrawable(imgOne, 1, { 
      translate: { 
       x:-0.15 
      } 

     }); 

     /* 
      The last line combines everything by creating an AR.ImageTrackable with the previously created tracker, the name of the image target and the drawable that should augment the recognized image. 
      Please note that in this case the target name is a wildcard. Wildcards can be used to respond to any target defined in the target collection. If you want to respond to a certain target only for a particular AR.ImageTrackable simply provide the target name as specified in the target collection. 
     */ 
     var pageOne = new AR.ImageTrackable(this.tracker, "*", { 
      drawables: { 
       cam: overlayOne 
      } 
     }); 
    }, 

    worldLoaded: function worldLoadedFn() { 

     var cssDivLeft = " style='display: table-cell;vertical-align: middle; text-align: right; width: 50%; padding-right: 15px;'"; 
     var cssDivRight = " style='display: table-cell;vertical-align: middle; text-align: left;'"; 
     document.getElementById('loadingMessage').innerHTML = 
      "<div" + cssDivLeft + ">Scan Target &#35;1 (surfer):</div>" + 
      "<div" + cssDivRight + "><img src='assets/bp.png'></img></div>"; 

     // Remove Scan target message after 10 sec. 
     setTimeout(function() { 
      var e = document.getElementById('loadingMessage'); 
      e.parentElement.removeChild(e); 
     }, 10000); 
    } 
}; 
World.init(); 

je visais pour rogner le morceau de l'image capturée est reconnue. J'ai demandé au forum Wikitude mais personne ne m'a guidé et je n'ai pas pu trouver la documentation correspondante. J'espère que quelqu'un m'aide ici.

Répondre

1

Pour réaliser ce que vous recherchez avec le Wikitude Javascript SDK, vous devrez écrire un simple plugin. Le SDK Javascript lui-même n'offre pas ce genre de fonctionnalité.

Vous recevez le cadre de caméra actuel dans la fonction cameraFrameAvailable et une liste de cibles actuellement reconnues dans la fonction update. La première donne accès à un pointeur unsigned char* au tampon de pixels de la trame de caméra actuelle, cette dernière fournissant les coordonnées de la cible d'image reconnue dans la trame susmentionnée.

void Plugin::cameraFrameAvailable(const wikitude::sdk::Frame& cameraFrame_) 

void Plugin::update(const std::list<wikitude::sdk::RecognizedTarget>& recognizedTargets_) 

Comme ces deux fonctions sont exécutées en même temps, vous devez être conscient des conditions de course et de synchroniser l'accès à vos données en conséquence.

Vous pouvez trouver les pages de documentation correspondantes, y compris tous les détails sur comment écrire un plugin, here. Je souhaite souligner que vous avez reçu une réponse à la question que vous avez postée sur les forums Wikitude dans quelques heures. Nous serions heureux de vous fournir une assistance supplémentaire si vous en avez besoin.