Opencv路徑的統一修改以及不同版本路徑的轉換

這篇文章重點是解決最近在opencv大批量文件進行讀寫時,重複性的更改文件名稱以及不同opencv版本的char*和string路徑的不匹配問題。
這回的問題可能對某些C++基礎很好的人來說完全不存在,不過還是寫下來以供大家參考指點。如果有更好的方法務必告知。
問題指出:在循環讀取一個文件夾中不同的文件(這裏以圖片爲例),一般會想到將文件名命名的十分有規律。調用的時候我卻一時想不到如何通過一句話全部調用,而不是每次都要重新修改路徑,比如:imread(“..\oo\a1.bmp”,0),接下來下一次運行想要讀入a2.bmp,就需要手動更改。

有種簡單的方法就可以實現自動調用,比如:


std::stringstream si;
std::string istr;
for(int i=1;i<100;i++)
{
    si<<i;
    si>>istr;
    string path = "..\\oo\\a"+istr+".bmp"
    image = imread(path,0);
    .
    .
    .
}

還有一種情況就是在一個cpp文件中,可能會保存不同後綴,統一名稱的文件,同理,可以利用以下方法:

string name = "..\\mydir\\1-4";
string path = name + ".JPG";

最後想說的時在opencv1中,一般使用cvLoadImage之類的函數,他們調用的路徑格式是const char *filename,所以需要轉換一下

char*p=(char*)path.data();
src = cvLoadImage(p, 0);

以上只是個簡單思路,需要使用的話還需要舉一反三。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章