c++ - 将图像数据复制到 cv::mat 的 vector

标签 c++ opencv stdvector

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/

相关文章:

c++ - VIM 的 YouCompleteMe 插件 - 如何支持其他库方法的自动完成? (例如 openmpi)

c++ - cplusplus 导入 csv 不识别第一列?

image-processing - 如何处理RGB到YUV的转换

c++ - 将 boost 属性树(ptree)序列化为 vector 的最快方法是什么

c++ - 结构 vector 的值意外变化

c++ - 设置列样式? (非托管 C++)

c++ - Makefile:没有规则来制作目标。停止

opencv - DJI Phantom 4 相机本征矩阵

opencv - HOGDescriptor错误和断言失败

c++ - 遍历 vector 的元素时索引类型应该是什么?