2017-09-29 3 views
0

minMaxLocに少し問題があります。ポイントを参照として渡して、max_Locを取得しようとしたときにエラーが発生しました。周りを見回した後、私はポイントの代わりにダブルを使用している人々の例を多数見つけましたが、ここではそうではありません。ここでminMaxLoc()opencv drama

コード:

int ImageEvaluator::findPot() 
{ 
    Point max_Loc; 
    double max_Val; 
    while (true) 
    { 
     for (int j = 0; j < 12; j++) 
     { 

      cv::Mat compResult; 
      cv::matchTemplate(references[7], templates[7][j], compResult, 
           CV_TM_CCOEFF_NORMED); 
      cv::minMaxLoc(compResult, NULL, &max_Val, NULL, &max_Loc); 

      if (max_Val > minAcceptableValue) 
      { 
       std::cout << "Stand up and shout how the **** did that just work" << std::endl; 
       return joydivision; 
      } 
     } 
    } 
} 

エラーC2665「のcv :: minMaxLoc」:2つのオーバーロードのいずれも種類

すべての引数は、これは数字のaloadを見つけた小さな関数で変換することができなかったと私はそれがPythonでうまくいっていた。私がC + +に移動するとすぐに、それは上記の望ましくないエラーの形で私のためにすべて下り坂になりました。

すべてのご協力をいただきありがとうございます。それは私が間違って私のポイントを宣言したことが判明傷ヘッドのaload後

おかげ

+1

まず、 'compResult'を正規化し、' matchTemplate() 'の結果が期待通りであることを確認するためにそれを表示することをお勧めします。 ['minMaxIdx()'](http://docs.opencv.org/3.2.0/d2/de8/group__core__array.html#ga7622c466c628a75d9ed008b42250a73f)を代わりに使用すると、適切な線形インデックスが得られますか? –

答えて

1

こんにちは皆を。変更後の

Point max_Loc; 

の中へは:

cv::Point min_Loc(0,0),max_Loc(0,0); 

働いているようです。すべてのあなたの助けてくれてありがとう。 :)