错误:输入参数的大小不匹配。 cvTriangulatePoints

时间:2016-03-22 14:04:51

标签: c visual-studio opencv triangulation

我在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}}

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 的更多信息。