-1

私の例では、opencv マッチング テンプレートを使用して複数の画像と 1 つのテンプレートを読み込む方法 バルサ チームとアルゼンチン チームのメッシを見てみると、"./MatchingTemplate barca.jpg mesi.jpg" で動作します (Iメッシだと思います)しかし、「./MatchingTemplate barca.jpg argentina.jpg messi.jpg」を試してみると(うまくいきません)

NB: cpp を使用して Linux で (./MatchingTemplate image1 image2 image3, ... mytemplate) で実行しました。MatchingTemplate の基本的なソース コードを使用しています。 template_matching/template_matching.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 に答える