検出ハフ変換円形

ハフは、円検出原理を変換します:

我々は、すべての3点が交差点の共通点は確かに存在しているサークルのすべての3つのポイントの半径を行うために円を決定することができ、交点が円の中心として三点であることを知っています。

ハフは、円形の検出原理で検出原理を変換同一の直線です。発現は、円である   (XA)2 +(Ybの)2 = R&LT 2  、

最大(A、B、R)パラメータ対を介して画素に問題を解決します。 

 

 

 

 

    一般的方法:(円検出方法)本明細書中で使用されていません

参考リンクします。https://www.cnblogs.com/lancer2015/p/6852488.html

                             https://blog.csdn.net/poem_qianmo/article/details/26977557

 

 

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

 

#include <opencv2 / opencv.hpp> 
の#include <iostreamの> 
する#include <math.h>の使用名前空間CV。
使用して名前空間はstdを、INTメイン(int型 ARGC、チャー ** ARGV){ 
    マットSRC、DST。
    SRC =関数imread(" L:/8.png " );
    もし(!src.data)
    { 
        のprintf(" 画像... \ nを読み込むことができませんでした" );
        戻る - 1 
    } チャー INPUT_TITLE [] = "

  


    入力画像" ;
     CHAR OUTPUT_TITLE [] = " ハフ円デモ; 
    namedWindow(INPUT_TITLE、CV_WINDOW_AUTOSIZE); 
    namedWindow(OUTPUT_TITLE、CV_WINDOW_AUTOSIZE); 
    関数imshow(INPUT_TITLE、SRC); 
    
    // 中值滤波
    マットmoutput;
     // GaussianBlur(srcが、 moutput、サイズ(5,5)、0,0); 
    medianBlur(SRC、moutput、3 ); 
    cvtColor(moutput、moutput、CV_BGR2GRAY); 

    // 霍夫圆检测 
    ベクトル<Vec3f> pcircles; 
    HoughCircles(moutput、pcircles、 CV_HOUGH_GRADIENT、11010030550 )。
    src.copyTo(DST)。
    以下のための(iは= SIZE_T 0 ; iはpcircles.size()<; iは++ 
    { 
        Vec3fのCC = pcirclesを[I]。
        円(DST、ポイント(CC [ 0 ]、CC [ 1 ])、CC [ 2 ]、スカラー(00255)、1.5 、LINE_AA)。
        円(DST、ポイント(CC [ 0 ]、CC [ 1 ])、2、スカラー(02550)、2、LINE_AA)。
    } 
    関数imshow(OUTPUT_TITLE、DST)。

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

 

結果:

 

 

 

図オリジナルの検出:

      

 

おすすめ

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