繁体   English   中英

opencv 3.0 Mat不提供下标运算符

[英]opencv 3.0 Mat not provide a subscript operator

我目前正在Xcode 7.2中使用Opencv 3.0 C ++。 我已经写了代码错误

Variable length array of non-POD element type cv::Mat

示例代码定义如下

Mat symbol[opts.numofblocksX*opts.numofblocksY];

我将代码更改为

Mat symbol = symbol[opts.numofblocksX * opts.numofblocksY];

它显示另一个错误

cv::Mat doest not provide a subscript operator

有人遇到过同样的问题吗? 我在这里可以实现什么解决方案?

谢谢

这段代码:

cv::Mat symbol[opts.numofblocksX*opts.numofblocksY];

定义大小为opts.numofblocksX*opts.numofblocksYMat数组。

您得到的错误是因为此数组的大小在编译时不固定,并且不是POD类型

您的新代码有缺陷。

cv::Mat symbol = symbol[opts.numofblocksX * opts.numofblocksY];

这定义了一个称为符号的Mat ,然后以opts.numofblocksX * opts.numofblocksY作为参数, opts.numofblocksX * opts.numofblocksY尝试对operator []进行调用。 这不是在声明数组。

有两个明显的选择:

  • 在允许可变大小分配的堆上分配数组。 不要忘记稍后delete[] (或使用智能指针)

    cv::Mat *symbol = new cv::Mat[opts.numofblocksX * opts.numofblocksY];

  • 使用std :: vector(推荐):

    std::vector<cv::Mat> symbols(opts.numofblocksX * opts.numofblocksY]);

暂无
暂无

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

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