Calculer la distance (disparité) OpenCV

-- Mise à jour 2 --

La suite de l'article est vraiment utile (même si c'est à l'aide de Python au lieu de C++) si vous êtes en utilisant une seule caméra pour calculer la distance: Trouver la distance entre la caméra et l'objet/marqueur à l'aide de Python et OpenCV

Meilleur lien est Stéréo Webcam Profondeur De Détection. La mise en œuvre de ce projet open source est vraiment clair.

Ci-dessous est la question d'origine.


Pour mon projet, je suis à l'aide de deux caméras (la vision stéréo) pour le suivi d'objets et de calculer la distance. J'ai calibré avec l'exemple de code de OpenCV et a généré un écart carte.

J'ai déjà mis en place une méthode de suivi des objets en fonction de la couleur (ce qui génère un seuil de l'image).

Ma question: Comment puis-je calculer la distance pour le suivi des objets colorés à l'aide de la disparité de la carte/de la matrice?

Vous trouverez ci-dessous un extrait de code qui récupère le x,y et z les coordonnées de chaque pixel. La question: Est-ce Point.z (cm), pixels, mm?

Puis-je obtenir la distance à l'objet suivi avec ce code?

Vous en remercie d'avance!

cvReprojectImageTo3D(disparity, Image3D, _Q);

vector<CvPoint3D32f> PointArray;
CvPoint3D32f Point;

for (int y = 0; y < Image3D->rows; y++) {    

    float *data = (float *)(Image3D->data.ptr + y * Image3D->step);  

    for (int x = 0; x < Image3D->cols * 3; x = x + 3) 
    {   
        Point.x = data[x];        
        Point.y =  data[x+1];     
        Point.z = data[x+2];
        PointArray.push_back(Point);
        //Depth > 10
        if(Point.z > 10)
        {
            printf("%f %f %f", Point.x, Point.y, Point.z);              
        }
    }
}
cvReleaseMat(&Image3D);

--Mise à jour de 1--

Par exemple, j'ai généré ce thresholded de l'image (de la caméra de gauche). J'ai presque le même de la caméra de droite.

Calculer la distance (disparité) OpenCV

Outre les au dessus du seuil de l'image, l'application génère une disparité de la carte. Comment puis-je obtenir les coordonnées Z des pixels de la main dans la disparité de la carte?

Je veux obtenir toutes les coordonnées Z des pixels de la main pour calculer la moyenne de la valeur Z (distance) (à l'aide de la disparité de la carte).

InformationsquelleAutor Odrai | 2013-06-13