2017-09-06 11 views
2

Remarque: Je ne demande pas de projeter un objet 3D sur une image de caméra 2D (pour laquelle plusieurs réponses existent).Est-ce que opencv dispose d'un package pour transformer des points 3D en une vue 2D descendante?

C'est encore plus simple que ça: j'ai un modèle 3D de, disons, une rue. Je veux transformer cela en une carte de rue. Il s'agit donc d'une vue descendante/aérienne, sans vue de caméra. J'utilise OpenCV pour le traitement d'image.

Je me rends compte qu'il est facile de programmer cela à partir de zéro, mais j'aimerais savoir si une routine existe déjà pour faire cela dans OpenCV.

+2

opencv est destiné à la vision par ordinateur et non à l'infographie. Mais il y a quelques fonctions pour projeter des points 3D sur une caméra dans openCV. Vous devrez calculer la texture vous-même. Ou vous utilisez simplement OpenGL à la place :) – Micka

+0

@Micka merci: si vous écrivez ceci comme une réponse négative, je l'accepterai! – Anton

+0

Vous pouvez le faire aussi directement en C++ voir [OpenCV Birdseye view sans perte de données] (https://stackoverflow.com/a/39316776/2521214) – Spektre

Répondre

3

OpenCV a fonction projectPoints, mais vous devez calculer la vous texturer

http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#void projectPoints (InputArray objectPoints, InputArray rvec, InputArray TVEC, InputArray cameraMatrix, InputArray distCoeffs, outputArray imagePoints, outputArray jacobiennes, double aspectRatio)

Utilisation d'une bibliothèque graphique de l'ordinateur comme openGL pourrait être mieux.

+0

n'appelle-t-il pas spécifiquement cette solution comme celle qu'il n'est pas intéressé? dans? c.-à-d. génération de projection de caméra d'image structurée –

+0

Pense juste que le titre/question peut être reformulé si c'est la réponse –

1

Je veux dire transformer votre « up vecteur » pour correspondre à l'axe cartésiennes z, puis exécutez juste un échantillonnage de grille xy prenant la valeur z la plus élevée par voxel ou moyenne