2014-01-22 53 views
0

我正在進行靜脈模式識別項目。我已經完成了與SURF探測器匹配的一對一,它只需提供文件名即可正常工作。現在,有沒有辦法,我可以做一對多的比較,並打開最大匹配圖像的圖像?像輸入一個文件名並與目錄中的圖像進行比較?有一些內置的函數可以用於遍歷圖像目錄嗎?如何做在opencv中一對多的圖像匹配?

我正在C++,Ubuntu 12.04LTS,Opencv中工作。

任何幫助深表感謝。

回答

1

您可以使用以下功能獲取給定文件夾內的所有文件。

int getdir (string dir, vector<string> &files) 
{ 
    DIR *dp; 
    struct dirent *dirp; 
    if((dp = opendir(dir.c_str())) == NULL) { 
     cout << "Error(" << errno << ") opening " << dir << endl; 
     return errno; 
    } 

    while ((dirp = readdir(dp)) != NULL) { 
     files.push_back(string(dirp->d_name)); 
    } 
    closedir(dp); 
    return 0; 
} 

在此之後,所有的文件將被保存在vector<string> files。您可以查看here瞭解更多信息。

P.S.要實現一對多的匹配,我認爲你需要循環這些文件,並根據簡單的一對一匹配進行比較,然後選擇最佳匹配。

+0

工作。我試圖循環的文件,但得到一個分段錯誤。 –

+0

@ user2079542您可以發佈您的代碼,以便我們可以找到該錯誤。或者更好地將其作爲另一個SO問題發佈。 :P – herohuyongtao

+0

這是一個愚蠢的錯誤,沒有爲圖像分配內存。我想到了。非常感謝。 –