簡體   English   中英

將圖像數據復制到cv :: mat的向量中

[英]copying image data to a vector of 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是包含圖像文件路徑的字符串向量。 ath打印正確。 im.data給出一個非空值。 但是將其推入vector <Mat>並打印元素后,顯示“應用程序已停止工作”。

應該如何解決?

因為,您將向量大小設置為adFileName.size(),然后push_back新元素。 您應該使用0大小構造矢量並使用push_back或使用insert。

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

可以使用默認的向量構造函數vector <Mat> redAd;而不是用NULL fill (這會增加問題) vector <Mat> redAd; 然后調用redAd.reserve(adFileName.size()) ,然后使循環保持原樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM