vector<Mat> imgs;
imgs.reserve(100);
imgs.push_back(imread("20191218103826.png"));
imgs.push_back(imread("20191218103828.png"));
//imgs.push_back(imread("20191218103830.png"));
Mat res;
Stitcher stitcher = Stitcher::createDefault(false);
Stitcher::Status status = stitcher.stitch(imgs, res);
使用Opencv的影像拼接函式Stitcher時,需要用到vector<Mat>來存放待處理圖片,問題是Stitcher函式用完之后,要退出模塊的時候系統會自動釋放vector<Mat> ,然后就直接跳到_free_base報錯了。這個問題在Debug模式下(MFC:共享DLL + 運行庫:多執行緒除錯 DLL (/MDd) + 依賴庫opencv_stitching249d.lib)是不會發生的,只在Release模式下(MFC:靜態庫 + 運行庫:多執行緒 (/MT) + 依賴庫opencv_stitching249.lib)發生。
有些帖子說使用opencv的函式之前vector型別的資料要預先申請記憶體空間,之后才能正常釋放。試過用reserve預先申請空間,還是會報錯。
之前做特征檢測的時候用過vector<keyPoint>型別的資料,也是類似的問題,當時用reserve預先申請空間解決了問題,不知道為什么這次用vector<Mat>不行。
我現在用的是VS2010 + opencv 2.4.9 ,求各位大神指導!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/129612.html
標籤:OpenCV
上一篇:BS實物期權定價模型中,計算N(d1)中d1時,算出來是負數,怎么辦?
下一篇:專案部署出現(單機版)READONLY You can't write against a read only replica.
