- Update 2-berechnen Abstand (Disparität) OpenCV
Der folgende Artikel wirklich nützlich ist (obwohl es Python anstelle von C++ verwenden), wenn Sie eine einzelne Kamera verwenden um den Abstand zu berechnen: Find distance from camera to object/marker using Python and OpenCV
Best Link ist Stereo Webcam Depth Detection. Die Umsetzung dieses Open-Source-Projekts ist wirklich klar.
Unten ist die ursprüngliche Frage.
Für mein Projekt verwende ich zwei Kameras (Stereo Vision), um Objekte zu verfolgen und die Entfernung zu berechnen. Ich habe sie mit dem Beispielcode von OpenCV kalibriert und eine Disparitätskarte erstellt.
Ich habe bereits eine Methode zur Verfolgung von Objekten basierend auf Farbe implementiert (dies erzeugt ein Schwellenwertbild).
Meine Frage: Wie kann ich den Abstand zu den verfolgten farbigen Objekten mit Hilfe der Disparitätskarte/Matrix berechnen?
Unten finden Sie ein Code-Snippet, das die x-, y- und z-Koordinaten jedes Pixels erhält. Die Frage: Ist Point.z in cm, Pixel, mm?
Kann ich mit diesem Code die Entfernung zum verfolgten Objekt ermitteln?
Vielen Dank im Voraus!
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);
- Update 1 -
Zum Beispiel erzeugen ich dieses schwellen Bild (von der linken Kamera). Ich habe fast das gleiche von der richtigen Kamera.
Neben dem obigen Schwellenbild, erzeugt die Anwendung eine Disparitätskarte. Wie kann ich die Z-Koordinaten der Pixel der Hand in der Disparitätskarte erhalten?
Ich möchte eigentlich alle Z-Koordinaten der Pixel der Hand erhalten, um den durchschnittlichen Z-Wert (Abstand) zu berechnen (unter Verwendung der Disparitätskarte).
Siehe --Update-- im ersten Post. – Odrai