2016-03-22 3 views
1

Я использовал функцию cvTriangulatePoints (см. документ: http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html) на визуальной студии. Когда у меня есть одна соответствующая точка на изображения (N = 1), код работает, но если я добавлю вторую точку (N = 2), я получил следующую ошибку: "ошибка: размеры входных аргументов не совпадают < Кол-во пунктов должно быть одинаковым> в cvTriangulatePoints. " Это первый раз, когда я использую cvTriangulatePoints с более чем 1 соответствующими точками. Можно ли добавить больше очков или у меня есть еще одна ошибка?: размеры входных аргументов не совпадают. cvTriangulatePoints

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); 

ответ

0

Когда значение N (количество каналов) поднимаются от 1 до 2, последний аргумент в cvCreateMat также должен быть изменен с

CV_64FC1 to CV_64FC2. 
    ^  ^

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

Сх часть arguement относится к количество каналов.

В более общем плане, название типа объекта Mat состоит из нескольких частей. Вот пример для CV_64FC1:

  • CV_ - библиотека Префикс
  • 64 - число битов на базовой матричного элемента (например, значение пиксела в черно-белое изображение или одного цветового элемента в BGR изображения)
  • F - тип базовый элемент. В данном случае это F для поплавка, но также может быть S (подпись) или U (без знака)
  • Cx - количество каналов, включенных в изображение

...Cx для вас должны быть ...C2
... from here

Здесь больше информации о CvType.

+0

Спасибо, сейчас он работает. – o9090

Смежные вопросы