【问题标题】:How to do One to many Image matching in opencv?如何在opencv中进行一对多图像匹配?
【发布时间】:2014-01-23 12:19:06
【问题描述】:

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

我正在使用 C++、Ubuntu 12.04LTS、Opencv 进行项目。

非常感谢任何帮助。

【问题讨论】:

    标签: c++ opencv pattern-matching


    【解决方案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&lt;string&gt; files。您可以查看here 了解更多信息。

    附:要实现一对多匹配,我认为您需要循环这些文件并根据简单的一对一匹配进行比较,然后选择最佳匹配。

    【讨论】:

    • 那行得通。我尝试循环文件,但出现分段错误。
    • @user2079542 您可以发布您的代码,以便我们找到错误。或者最好将其发布为另一个 SO 问题。 :P
    • 这是一个愚蠢的错误,没有为图像分配内存。我想到了。非常感谢。
    猜你喜欢
    • 2016-03-21
    • 2014-12-18
    • 2019-10-29
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多