[英]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.numofblocksY
的Mat
数组。
您得到的错误是因为此数组的大小在编译时不固定,并且不是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.