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
是包含图像文件路径的字符串 vector 。 aths 打印正确。 im.data
给出一个非空值。但是在将它插入 vector <Mat>
之后并打印一个元素显示“应用程序已停止工作”。
应该怎么解决?
最佳答案
因为,您将 vector 大小设置为 adFileName.size(),然后将新元素 push_back。 您应该构造大小为 0 的 vector 并使用 push_back 或使用 insert。
redAd.insert(redAd.begin()+i,1,im);
关于c++ - 将图像数据复制到 cv::mat 的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16189120/