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];
定义 Mat
个大小为 opts.numofblocksX*opts.numofblocksY
的数组。
你得到的错误是因为这个数组的大小在编译时不是固定的,这不是 POD type。
您的新代码有缺陷。
cv::Mat symbol = symbol[opts.numofblocksX * opts.numofblocksY];
这定义了一个单独的 Mat
调用符号,然后无意义地尝试以 opts.numofblocksX * opts.numofblocksY
作为参数对其调用 operator[]。这不是声明数组。
有两个明显的选择:
在允许可变大小分配的 heap 上分配您的数组。别忘了稍后delete[]
! (或使用智能指针)
cv::Mat *symbol = new cv::Mat[opts.numofblocksX * opts.numofblocksY];
使用std::vector(推荐):
std::vector<cv::Mat> symbols(opts.numofblocksX * opts.numofblocksY]);
我目前正在 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];
定义 Mat
个大小为 opts.numofblocksX*opts.numofblocksY
的数组。
你得到的错误是因为这个数组的大小在编译时不是固定的,这不是 POD type。
您的新代码有缺陷。
cv::Mat symbol = symbol[opts.numofblocksX * opts.numofblocksY];
这定义了一个单独的 Mat
调用符号,然后无意义地尝试以 opts.numofblocksX * opts.numofblocksY
作为参数对其调用 operator[]。这不是声明数组。
有两个明显的选择:
在允许可变大小分配的 heap 上分配您的数组。别忘了稍后
delete[]
! (或使用智能指针)cv::Mat *symbol = new cv::Mat[opts.numofblocksX * opts.numofblocksY];
使用std::vector(推荐):
std::vector<cv::Mat> symbols(opts.numofblocksX * opts.numofblocksY]);