如何在opencv中进行一对多的图像匹配?

时间:2014-01-22 23:04:44

标签: c++ opencv pattern-matching

我正在研究静脉模式识别项目。我已经与SURF探测器进行了一对一的匹配,只需给出文件名即可正常工作。现在,有没有办法,我可以进行一对多的比较并打开最大程度匹配图像的图像?比如输入一个文件名并与目录中的图像进行比较?是否有一些内置函数可以用于遍历images目录?

我在C ++,Ubuntu 12.04LTS,Opencv中使用该项目。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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。要实现一对多匹配,我认为您需要循环这些文件并根据简单的一对一匹配进行比较,然后选择最佳匹配。