-1

如何使用opencv匹配模板为我的示例加载多个图像和一个模板想想梅西)但如果我尝试“./MatchingTemplate barca.jpg argentina.jpg messi.jpg”(它不起作用)

注意:我使用 cpp 在 linux 中由 (./MatchingTemplate image1 image2 image3, ... mytemplate) 执行我使用 MatchingTemplate 的基本源代码:http: //docs.opencv.org/doc/tutorials/imgproc/histograms/模板匹配/模板匹配.html

4

1 回答 1

1

如果您想对matchTemplate存储在一个目录中的多个图像应用一个方法(此处),您应该使用一个函数将该目录中每个图像的名称存储到一个向量(即std::vector<std::string>)中并对其进行迭代。

这是一个使用示例boost

int EnumerateFiles(const std::string& target_path, const std::string& ext, std::vector<std::string>& res){              
    boost::filesystem::directory_iterator end_itr: // default ctor yields past-the-end
    for(boost::filesystem::directory_iterator i(target_path); i != end_itr; ++it){
      // skip if not a file
      if( !boost::filesystem::is_regular_file( i->status() ) ) continue;
      // skip if no match with extension
      if( i->path().extension() != ext.c_str() ) continue;
      // file matches, store it
      res.push_back(i->path().filename().c_str());
    }
}

然后你可以迭代你的main函数:

for(size_t i=0; i<res.size(); ++i){
   my_method(target_path+"/"+res.at(i), .. );
}
于 2013-04-27T13:48:05.567 回答