vector <mat> :: size()工作神奇</mat>

时间:2014-01-06 07:09:06

标签: c++ opencv

我有一个Mat类型的矢量,大小为1 x 720 x 3,即一行,720列和3个通道。我检查了尺寸如下

vector<Mat> image_rows_avg;
cout<<image_rows_avg[0].size;

它提供了一些像0x918840这样的值。可能这.size()给出了一些地址。所以我试着做了

cout<<image_rows_avg[0].size[0];给出了ans:1

cout<<image_rows_avg[0].size[1];给出了ans:720这又是正确的 cout<<image_rows_avg[0].size[2];再次给了ans:159187328垃圾。

我无法理解这是怎么回事。我认为.size()应该直接给出矢量的大小。

1 个答案:

答案 0 :(得分:5)

std::vector<T>中访问其范围之外的元素会导致未定义的行为。您的代码创建一个空std::vector<Mat>并访问一个不存在的元素。