error : sizes of input arguments do not match. cvTriangulatePoints
error : sizes of input arguments do not match. cvTriangulatePoints
我在 visual studio 上使用了函数 cvTriangulatePoints(参见文档 :http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html)。
当我每个图像有一个对应点 (N=1) 时,代码可以工作,但如果我添加第二个点 (N=2),我会收到以下错误:
"error : sizes of input arguments do not match < Number of points must be the same> in 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);
当 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);
争论的Cx部分是指通道数。
更一般地说,Mat
对象的类型名称由几个部分组成。这是 CV_64FC1
的示例:
CV_
- 图书馆前缀
64
- 每个基本矩阵元素的位数(例如灰度图像中的像素值或 BGR 图像中的单色元素)
F
- 基本元素的类型。在这种情况下,浮点数是 F
,但也可以是 S
(有符号)或 U
(无符号)
Cx
- 图像中包含的通道数
...Cx
你应该是 ...C2
...from here
这里有更多关于CvType的信息。
我在 visual studio 上使用了函数 cvTriangulatePoints(参见文档 :http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html)。 当我每个图像有一个对应点 (N=1) 时,代码可以工作,但如果我添加第二个点 (N=2),我会收到以下错误: "error : sizes of input arguments do not match < Number of points must be the same> in 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);
当 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);
争论的Cx部分是指通道数。
更一般地说,Mat
对象的类型名称由几个部分组成。这是 CV_64FC1
的示例:
CV_
- 图书馆前缀64
- 每个基本矩阵元素的位数(例如灰度图像中的像素值或 BGR 图像中的单色元素)F
- 基本元素的类型。在这种情况下,浮点数是F
,但也可以是S
(有符号)或U
(无符号)Cx
- 图像中包含的通道数
...Cx
你应该是 ...C2
...from here
这里有更多关于CvType的信息。