繁体   English   中英

CV :: Mat_ <Type> 分配错误

[英]cv::Mat_<Type> allocation error

我想使用自定义类型实例化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() );

提供以下输出:

cols = 1 rows 1 step = 8 elemSize = 8 elemSize1 = 8

这显然是错误的,因为我期望elemSize为20。这是否是bug或cv :: Mat_包装器不应该与自定义元素类型一起使用?

编辑:

将实例分配给cv :: Mat_元素时

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() );

我得到以下输出:

cols = 1 rows 1 step = 8 elemSize = 20 elemSize1 = 20

现在,elemSize是正确的,但是步骤是错误的。 据我了解,step用于计算要通过operator()(row,col)在矩阵中访问的特定元素,这样做时我发现了问题。 有人对这里发生的事情有更好的了解吗?

编辑2:

我提交了有关此问题的错误报告。 http://code.opencv.org/issues/4415 同时,如果有人对如何处理有任何想法,请告诉我。 谢谢。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM