将图像数据复制到cv :: mat
问题描述:
vector <Mat> redAd(adFileName.size());
fill(redAd.begin(), redAd.end(), NULL);
for (int i = 0; i < adFileName.size(); ++i) {
cout << adFileName[i].c_str() << endl;
Mat im = imread(adFileName[i].c_str(), 1);
cout << im.data << endl;
redAd.push_back(im);
cout << redAd[i].data << endl;
}
这里,adFileName
是包含图像文件路径的字符串向量。 aths打印正确。 im.data
给出一个非空值。但将它推入vector <Mat>
后,打印一个元素显示“应用程序已停止工作”。将图像数据复制到cv :: mat
该如何解决?
答
因为,您将矢量大小设置为adFileName.size(),然后push_back新元素。 您应该构造0大小的矢量并使用push_back或使用插入。
redAd.insert(redAd.begin()+i,1,im);
答
代替fill
与空值,这也加入到这个问题,你可以只调用默认的构造函数矢量和vector <Mat> redAd;
然后调用redAd.reserve(adFileName.size())
然后退出循环原样。