オリジナルのテンプレート画像を探します

 

 

 

 

 

 

 

 

 

 

 

 コードは以下の通りであります:

 

書式#include <opencv2 / opencv.hpp> 
の#include <iostreamの> 

書式#include <math.h>の
 使用して 、名前空間STD;
 使用して 名前空間CV; 

マットSRC、TEMP、DST; 
// トラックバーのパラメータ:
int型 match_method = TM_SQDIFF;   // match_method最初のマッチングへのポインタ
int型 max_track = 5。 ;              // 5つの方法がポインタmax_track        

のconst  のchar * INPUT_T = " 入力画像" ;
 constの char型 * OUTPUT_T = " 結果画像を" ;
 のconst  char型Match_t = * " テンプレート一致-DEMO " ;
 ボイド Match_Demo(INTボイド * );
 int型のmain(int型 ARGC、チャー ** ARGVは){
     // 画像が検出される 
    SRC =関数imread(" :/10.jpg Lを" ;)
     @ テンプレート画像 
    TEMP =関数imread(" L:/11.jpg " );
     IF(src.empty()|| temp.empty()){ 
        のprintf(" N- \ ...画像をロードできませんでした" );
         リターン - 1; 
    } 
    namedWindow(INPUT_T、CV_WINDOW_AUTOSIZE)。
    namedWindow(OUTPUT_T、CV_WINDOW_NORMAL)。
    namedWindow(match_t、CV_WINDOW_AUTOSIZE)。
    関数imshow(INPUT_T、TEMP)。
    const  のchar * trackbar_title = " マッチアルゴタイプ:" ; 
    createTrackbar(trackbar_title、OUTPUT_T、 match_method、max_track、Match_Demo)。 
    // 注意两个指针的作用&match_method、max_track 
    Match_Demo(00 ); 

    waitKey(0 )。
    リターン 0 ; 
} 

無効 Match_Demo(int型ボイド * ){
     // 結果の行列の定義は、単一チャネルの32ビット浮動小数点である必要があり、
     //は、W + 1、H - -ソースイメージ幅x高さ、幅x高テンプレート画像と仮定し、結果はWでなければならない + サイズのH 1。
    int型の幅= src.cols - temp.cols + 1 ;
     int型の高さ= src.rows - temp.rows + 1。; 
    マット結果(幅、高さ、CV_32FC1);     

    matchTemplate(SRC、TEMP、結果、match_method、マット()) ; // 5つの方法を指すポインタをmatch_method
     // ソース画像テンプレート2. 3.出力画像マッチング結果4. 5.Mat():matchTemplateプレートマジックマッチング関数
    
    正規化(その結果、その結果、01、NORM_MINMAX、 - 。1、マット());     // 正規化関数


    MINLOCポイント;                          // 最小点の位置のマッチング演算結果 
    ポイントMAXLOC;                          // 最大点位置のマッチング演算結果
    ダブル MIN、MAX;                       // double型
    src.copyTo(DST);                          
    ポイントtemLoc;                          //見出さ定義位置点座標 
    minMaxLoc(その結果、&​​MIN、MAX&&MINLOC、&MAXLOC、マット());   // 結果の行列の最小値と最大点を見つける

    IF(match_methodが== == TM_SQDIFF ||はmatch_method {TM_SQDIFF_NORMED)を
        temLoc =をMINLOC; 
    } 
    そうでなければ{ 
        temLoc =  MAXLOC。
    } 

    //矩形描画 
    矩形(DST、のRect(temLoc.x、temLoc.y、temp.cols、temp.rows)、スカラー(00255)、2。8 );
     // 矩形関数パラメータ:対象画像2 。四角形のカラーライン3. 4. 5.デフォルト厚さ8アンチエイリアシングの開始点と長さと幅のRect矩形座標 
    矩形(結果のRect(temLoc.x、temLoc.y、temp.cols、temp.rows)、スカラー(00255)、28 ); 

    関数imshow(OUTPUT_T、結果); 
    関数imshow(match_t、DST); 
}

 

 オリジナル:                                                             

 

 

             

テンプレート:

 

 

 マッチ:(注5種類:知見が描かれた矩形座標点テンプレートマッチングを標識した後、ここに画像の計算によって所有されている結果)

 

 

 

 

 

 

 

 

 

 

 

 

 

 上記の結果から分かるように、第三の方法に加えて、テンプレートマッチングの位置以外の画像に見つかりません

他の4つの方法は、自車両の正確な位置を特定することができます。

 

おすすめ

転載: www.cnblogs.com/Jack-Elvis/p/11530283.html