gpt4 book ai didi

c - 错误 : sizes of input arguments do not match. cv TriangulatePoints

转载 作者:太空宇宙 更新时间:2023-11-03 23:17:51 24 4
gpt4 key购买 nike

我在 visual studio 上使用了函数 cvTriangulatePoints(参见文档:http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html)。当我每个图像有一个对应点 (N=1) 时,代码可以工作,但如果我添加第二个点 (N=2),我会收到以下错误:“错误:输入参数的大小与 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( channel 数)的值从 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 部分指的是 channel 数。

更一般地说,Mat 对象的类型名称由几个部分组成。以下是 CV_64FC1 的示例:

  • CV_ - 库前缀
  • 64 - 每个基本矩阵元素的位数(例如灰度图像中的像素值或 BGR 图像中的单色元素)
  • F - 基本元素的类型。在这种情况下,它是 F 表示 float ,但也可以是 S(有符号)或 U(无符号)
  • Cx - 图像中包含的 channel 数

...Cx 对你来说应该是 ...C2
... from here

这里是关于的更多信息CvType .

关于c - 错误 : sizes of input arguments do not match. cv TriangulatePoints,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36156571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com