Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 错误:输入参数的大小不匹配。三角点_C_Visual Studio_Opencv_Triangulation - Fatal编程技术网

C 错误:输入参数的大小不匹配。三角点

C 错误:输入参数的大小不匹配。三角点,c,visual-studio,opencv,triangulation,C,Visual Studio,Opencv,Triangulation,我在VisualStudio上使用了函数cvTriangulatePoints(请参见文档:)。 当我每个图像有一个对应点(N=1)时,代码工作,但如果我添加第二个点(N=2),我会得到以下错误: “错误:输入参数的大小与cvTriangulatePoints中的”不匹配。” 这是我第一次使用cvTriangulatePoints与1个以上的对应点。是否可以添加更多点,或者我是否有其他错误 CvMat* projMatr1; CvMat* projMatr2; CvMat* projPoints

我在VisualStudio上使用了函数cvTriangulatePoints(请参见文档:)。 当我每个图像有一个对应点(N=1)时,代码工作,但如果我添加第二个点(N=2),我会得到以下错误: “错误:输入参数的大小与cvTriangulatePoints中的<点数必须相同>”不匹配。” 这是我第一次使用cvTriangulatePoints与1个以上的对应点。是否可以添加更多点,或者我是否有其他错误

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\u 64FC1
的示例:

  • CV
    -库前缀
  • 64
    -每个基本矩阵元素的位数(例如灰度图像中的像素值或BGR图像中的单色元素)
  • F
    -基本元素的类型。在这种情况下,它是浮动的
    F
    ,但也可以是
    s
    (有符号)或
    U
    (无符号)
  • Cx
    -图像中包含的通道数
…Cx
对于您来说应该是
…C2

以下是有关的详细信息。

当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\u 64FC1
的示例:

  • CV
    -库前缀
  • 64
    -每个基本矩阵元素的位数(例如灰度图像中的像素值或BGR图像中的单色元素)
  • F
    -基本元素的类型。在这种情况下,它是浮动的
    F
    ,但也可以是
    s
    (有符号)或
    U
    (无符号)
  • Cx
    -图像中包含的通道数
…Cx
对于您来说应该是
…C2

这里有更多的信息