2013-04-24 106 views
1
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

该如何解决?

回答

1

因为,您将矢量大小设置为adFileName.size(),然后push_back新元素。 您应该构造0大小的矢量并使用push_back或使用插入。

redAd.insert(redAd.begin()+i,1,im); 
1

代替fill与空值,这也加入到这个问题,你可以只调用默认的构造函数矢量和vector <Mat> redAd;然后调用redAd.reserve(adFileName.size())然后退出循环原样。