6

Je veux trouver une position d'un point avec opencv. J'ai calibré deux caméras en utilisant cvCalibrateCamera2. donc je connais les paramètres intrinsèques et extrinsèques. J'ai lu qu'avec des paramètres intrinsèques et extrinsèques connus, je peux facilement reconstruire 3D par triangulation. Y at-il une fonction dans opencv pour réaliser ceci. Je pense que cvProjectPoint2 peut être utile mais je ne comprends pas exactement quoi. Alors, comment puis-je trouver la position 3d d'un point.comment trouver la position 3d d'un point avec des paramètres intrinsèques et extrinsèques avec opencv

Merci.

+0

Cette explication peut vous aider à comprendre. http://dsp.stackexchange.com/q/2736/1473 –

Répondre

6

Vous devez d'abord trouver des disparités. Deux algorithmes sont implémentés dans OpenCV - la correspondance de blocs (cvFindStereoCorrespondenceBM) et les coupes de graphiques (cvFindStereoCorrespondenceGC). Ce dernier donne de meilleurs résultats mais est plus lent. Après la détection de disparité, vous pouvez reprojeter les disparités à 3D en utilisant cvReprojectImageTo3D. Cela vous donne des distances pour chaque point des images d'entrée qui se trouvent dans les deux vues de la caméra.

Notez également que les algorithmes de correspondance stéréo nécessitent une paire d'images rectifiées (utilisez cvStereoRectify, cvInitUndistortRectifyMap et cvRemap).