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给出一个非空值。但是在将其推入 avector <Mat>并打印一个元素后显示“应用程序已停止工作”。

应该如何解决?

4

2 回答 2

1

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

redAd.insert(redAd.begin()+i,1,im);
于 2013-04-24T10:38:32.247 回答
1

您可以只调用默认向量构造函数,然后调用,然后按原样保留循环,而不是fill使用 NULL,这会增加问题。vector <Mat> redAd;redAd.reserve(adFileName.size())

于 2013-04-24T10:58:41.513 回答