Question

I ont une image affichée sur l'écran qui est faussé par l'intermédiaire d'cvInitUndistortMap & cvRemap (ayant fait l'étalonnage de la caméra), et l'utilisateur clique sur un élément dans l'image. Donc, je les (u, v) des coordonnées de pixel de la fonction, et I ont également la matrice intrinsèque et la matrice de déformation.

Ce que je suis à la recherche est l'équation de la ligne 3D en coordonnées caméra / monde réel sur lequel la fonction l'utilisateur cliquait se trouvent must. Je possède déjà la distance perpendiculaire entre le plan image de la caméra et la fonctionnalité, de sorte que je peux combiner avec l'équation ci-dessus pour me donner le (X, Y, Z) de coordonnées de l'élément dans l'espace.

Cela semble facile (inverse matrice ou quelque chose d'intrinsèque?) Mais je ne peux pas trouver des instructions étape par étape partout. code C ++ ou C # préféré.

Était-ce utile?

La solution

est un peu vieille question, mais pourrait encore être utile pour quelqu'un. Toutes les lignes passent par le point (0,0,0), donc:

line.x0 = 0; line.y0 = 0; line.z0 = 0;

vecteur de direction est le suivant: ligne.Procédé = (u / fx) - (cx / fx); line.B = (v / fy) - (cy / fy); line.C = 1;

cx, cy, fx, fy sont des paramètres de la matrice de la caméra. Les équations sont expliqués dans le livre "Learning OpenCV".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top