2016-03-22 9 views
1

Ich habe die Funktion cvTriagulatePoints (siehe doc: http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html) im Visual Studio verwendet. Wenn ich einen entsprechenden Punkt pro Bild habe (N = 1), funktioniert der Code, aber wenn ich einen zweiten Punkt hinzufüge (N = 2), bekomme ich folgenden Fehler: "Fehler: Größen der Eingabeargumente stimmen nicht überein < Anzahl der Punkte muss in cvTriagulatePoints gleich sein. " Es ist das erste Mal, dass ich cvTriagulatePoints mit mehr als 1 entsprechenden Punkten benutze. Ist es möglich, mehr Punkte hinzuzufügen oder habe ich einen anderen Fehler?Fehler: Größen der Eingabeargumente stimmen nicht überein. cvTriagulatePoints

CvMat* projMatr1; 
CvMat* projMatr2; 
CvMat* projPoints1; 
CvMat* projPoints2; 
CvMat* points4D; 
int N = 2; 

projMatr1 = cvCreateMat(3, 4, CV_64FC1); 
projMatr2 = cvCreateMat(3, 4, CV_64FC1); 
projPoints1 = cvCreateMat(2, N, CV_64FC1); 
projPoints2 = cvCreateMat(2, N, CV_64FC1); 
points4D = cvCreateMat(4, N, CV_64FC1); 
// I fill the matrices with the opencv function cvSet2D() 
cvTriangulatePoints(projMatr1, projMatr2, projPoints1, projPoints2, points4D); 

Antwort

0

Wenn der Wert von N (Anzahl der Kanäle) von 1 auf 2 erhöht wird, das letzte Argument in cvCreateMat soll auch von

CV_64FC1 to CV_64FC2. 
    ^  ^

projPoints1 = cvCreateMat(2, N, CV_64FC2); 
projPoints2 = cvCreateMat(2, N, CV_64FC2); 
points4D = cvCreateMat(4, N, CV_64FC2); 

Der Cx Teil des arguement geändert wird, bezieht sich auf die Anzahl der Kanäle.

Allgemeiner, Typname eines Objekts besteht aus mehreren Teilen. Hier ist beispielsweise für CV_64FC1:

  • CV_ - Bibliothek prefix
  • 64 - Anzahl der Bits pro Basismatrixelement (zB Pixelwert in Graustufenbild oder Einzelfarbelement in BGR-Bild)
  • F - Art der Basiselement. In diesem Fall ist es F für Schwimmer, sondern auch S sein kann (signiert) oder U (unsigned)
  • Cx - Anzahl der Kanäle im Bild enthalten

...Cx für Sie sollten ...C2
sein ... from here

ist hier mehr Informationen über CvType.

+0

Danke, es funktioniert jetzt. – o9090