C++ cv::材料<;类型>;分配错误
我想用自定义定义的类型实例化cv::Mat,但分配似乎失败了。例如: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
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);