我有一个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()
应该直接给出矢量的大小。
答案 0 :(得分:5)
在std::vector<T>
中访问其范围之外的元素会导致未定义的行为。您的代码创建一个空std::vector<Mat>
并访问一个不存在的元素。