2016-10-16 2 views
1

J'essaie de trouver les coordonnées x et y des repères détectés à partir de Processing BoofCV.BoofCV détection des coordonnées x et y des repères

code: https://github.com/lessthanoptimal/BoofProcessing/tree/master/examples/Fiducials

Dans l'exemple ci-dessus, je l'ai fait pour obtenir les coordonnées X et Y.

for(FiducialFound f : found) { 
    detector.render(this,f); 
    println(f.getFiducialToCamera().getTranslation().getX() + " " + f.getFiducialToCamera().getTranslation().getY()) 
} 

Mais les valeurs renvoyées semblent étranges.

Screenshot: getX() getY() values - Processing BoofCV

que quelqu'un peut me pointer la bonne direction? Merci d'avance.

Cordialement S

+0

Que voulez-vous dire exactement quand vous dites les valeurs semblait étrange? Quelles sont exactement les valeurs? Comment exactement semblent-ils étranges? –

+0

@KevinWorkman S'il vous plaît vérifier cette image. https://i.stack.imgur.com/jledE.png – werty37

+0

Qu'en est-il de ces valeurs qui vous semblent étranges? Qu'attendez-vous qu'ils soient? –

Répondre

1

Vous obtenez le coordonnées X et Y de sa position dans le cadre du monde ne l'image. Pour trouver son emplacement dans l'image, vous devez projeter le point du monde 3D dans la caméra.

L'API de traitement facile à utiliser est de niveau trop élevé, mais voici comment vous le faites en Java.

WorldToCameraToPixel worldToPixel = PerspectiveOps.createWorldToPixel(intrinsic, targetToCamera); 
worldToPixel.transform(c,p); 

targetToCamera est la transformation que le rendement du détecteur et le point de repère « p » sera le centre du fiducial.

+0

Je peux écrire une classe d'aide ou quelque chose et contribuer à Boofcv bibliothèque de traitement si vous me montrez comment. S'il vous plaît, faites-moi savoir. Merci. – werty37

+0

J'essaie d'extraire ces coordonnées x et y de sorte qu'un cercle vectoriel suit le repère. Je serai heureux de vous aider à faire cela comme exemple de bibliothèque dans le traitement de boofcv. pour (FiducialFound f: found) { detector.render (this, f); WorldToCameraToPixel worldToPixel = PerspectiveOps.createWorldToPixel (détecteur.guessCrappyIntrinsic (cam.width, cam.height), f.getFiducialToCamera(). GetTranslation()); worldToPixel.transform (c, p); Vec2D _target = new Vec2D (p.x, p.y); c.run(); c.chasePerson (_target); } – werty37