我在visual studio上使用了函数cvTriangulatePoints(参见doc:http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html)。 当每个图像(N = 1)有一个对应点时,代码可以工作,但如果我添加第二个点(N = 2),我得到以下错误: "错误:输入参数的大小不匹配<点数必须相同>在cvTriangulatePoints。" 这是我第一次使用带有1个以上对应点的cvTriangulatePoints。是否可以添加更多点数,还是有其他错误?
{{1}}
答案 0 :(得分: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);
争论的 Cx 部分是指频道数。
更一般地说,Mat
对象的类型名称由几个部分组成。以下是CV_64FC1
的示例:
CV_
- 图书馆前缀64
- 每个基本矩阵元素的位数(例如灰度图像中的像素值或BGR图像中的单色元素)F
- 基本元素的类型。在这种情况下,浮点数为F
,但也可以为S
(已签名)或U
(无符号)Cx
- 图片中包含的频道数 ...Cx
对你应该是...C2
... from here
以下是有关 CvType 的更多信息。