0

OpenCV docs for solvePnpDans solvePnP d'opencv, que dois-je faire pour objectPoints?

Dans une application de réalité augmentée, je détecte l'image de la scène donc je sais imagePoints, mais l'objet que je suis à la recherche (objectPoints) est un marqueur virtuel juste stocké dans la mémoire à rechercher dans la scène , donc je ne sais pas où c'est dans l'espace.
Le livre que je suis en train de lire (Mastering OpenCV avec Practical Computer Vision Projects) le passe comme si le marqueur était une matrice 1x1 et ça marche bien, comment?
Does solvePnP n'a pas besoin de connaître la taille de l'objet et sa projection pour savoir à quelle échelle est appliquée l'échelle?

Répondre

0

En supposant que vous recherchez un objet physique, vous devez transmettre les coordonnées 3D des points du modèle qui sont mappés (par projection) aux points 2D de l'image. Vous pouvez utiliser n'importe quel cadre de référence, et les résultats de solvePnp vous donneront la position et l'orientation de la caméra dans ce cadre de référence. Si vous souhaitez obtenir la position/l'orientation de l'objet dans l'espace de la caméra, vous pouvez ensuite transformer les deux par l'inverse de la transformation que vous avez obtenue de solvePnp, afin que la caméra soit déplacée vers l'origine.

Par exemple, pour un objet cube de la taille 2x2x2, les coins visibles peut-être quelque chose comme: {-1,-1,-1},{1,-1,-1},{1,1,-1}.....

0

Vous devez passer les coordonnées 3D de l'objet dans le monde réel que vous voulez mapper avec l'image. Les valeurs de mise à l'échelle et de rotation dépendent du système de coordonnées que vous utilisez.

Ce n'est pas aussi difficile que cela puisse paraître. Voir this blog post sur l'estimation de la pose de la tête. pour plus de détails avec le code.