Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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++ cv::材料<;类型>;分配错误_C++_Opencv - Fatal编程技术网

C++ cv::材料<;类型>;分配错误

C++ cv::材料<;类型>;分配错误,c++,opencv,C++,Opencv,我想用自定义定义的类型实例化cv::Mat,但分配似乎失败了。例如: struct SType { int a; char c[16]; }; cv::Mat m = cv::Mat_<SType>(1, 1); printf("cols = %i rows %i step = %zi elemSize = %zi elemSize1 = %zi\n", m.cols, m.rows, m.step[0], m.elemSize(), m.elemS

我想用自定义定义的类型实例化cv::Mat,但分配似乎失败了。例如:

struct SType
{
    int a;
    char c[16];
};

cv::Mat m = cv::Mat_<SType>(1, 1);

printf("cols = %i rows %i step = %zi elemSize = %zi elemSize1 = %zi\n",
       m.cols, m.rows, m.step[0], m.elemSize(), m.elemSize1() );
这显然是错误的,因为我期望20个元素。这是一个bug还是cv::Mat_uuu包装不应该与自定义元素类型一起使用

编辑:

将实例指定给cv::Mat_uu元素时

cv::Mat_<SType> m = cv::Mat_<SType>(1, 1);

printf("cols = %i rows %i step = %zi elemSize = %zi elemSize1 = %zi\n",
       m.cols, m.rows, m.step[0], m.elemSize(), m.elemSize1() );
现在,elemSize是正确的,但步骤是错误的。据我所知,step用于通过操作符()计算要在矩阵中访问的特定元素(行,列),这样做时我观察到了问题。有人对这里发生的事情有更好的了解吗

编辑2:


我提交了一份关于这个问题的bug报告。同时,如果有人知道如何处理,请告诉我。谢谢。

我想我发现了错误。将变量声明为cv::Mat。尝试:

cv::Mat_<SType> m = cv::Mat_<SType>(1, 1);
cv::Mat_um=cv::Mat_um(1,1);

我想我发现了错误。将变量声明为cv::Mat。尝试:

cv::Mat_<SType> m = cv::Mat_<SType>(1, 1);
cv::Mat_um=cv::Mat_um(1,1);

我的理解是,cv::Mat_uu只是cv::Mat的包装,所以它不会有任何区别。无论如何,我都会尝试一下,如果有什么不同,我会告诉你。我的理解是,cv::Mat_uu只是cv::Mat的包装,所以它不会有任何不同。无论如何,我都会尝试一下,如果有什么不同,我会告诉你。我的理解是,cv::Mat_uu只是cv::Mat的包装,所以它不会有任何不同。不管怎样,我都会尝试一下,如果它有什么不同,我会告诉你。通常,你必须为你的新类型定义一些(我不认为使用“混合”结构)通常,你必须为你的新类型定义一些(我不认为使用“混合”结构)通常,你必须为你的新类型定义一些(我看不到这与“混合”结构一起工作)
cv::Mat_<SType> m = cv::Mat_<SType>(1, 1);