ハフは、円検出原理を変換します:
我々は、すべての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、1、10、100、30、5、50 )。 src.copyTo(DST)。 以下のための(iは= SIZE_T 0 ; iはpcircles.size()<; iは++ ) { Vec3fのCC = pcirclesを[I]。 円(DST、ポイント(CC [ 0 ]、CC [ 1 ])、CC [ 2 ]、スカラー(0、0、255)、1.5 、LINE_AA)。 円(DST、ポイント(CC [ 0 ]、CC [ 1 ])、2、スカラー(0、255、0)、2、LINE_AA)。 } 関数imshow(OUTPUT_TITLE、DST)。 waitKey(0 )。 リターン 0 ; }
結果:
図オリジナルの検出: