Hough Circleの検出とHoughラインの検出の原理は同様です。円の場合、パラメーター座標系ではc:(x、y、r)として表されます。
関数:
imgproc.houghcircles(MAT Image、Mat Circuits、Int Method、Double DP、Double Mindist、Double Param1、double Param2、int minradius、int maxradius)
パラメーター説明:
画像:ソース画像
円:検出された円の出力ベクトル(x、y、r)
方法:使用された検出方法、現在1つのimgproc.hough_gradientしかありません
DP:円の中心にあるアキュムレータ画像とソース画像の比率の逆
マインディスト:検出された円の中心間の最小距離
PARAM1:メソッドによって設定された検出方法の対応するパラメーター。 hough_gradientの場合、エッジ検出演算子の高いしきい値を示します(低いしきい値は高いしきい値の半分です)、デフォルト値は100です
PARAM2:メソッドで設定された検出法の対応するパラメーターは、hough_gradientであり、アキュムレータのしきい値を示します。値が小さいほど、無関係な円が検出されました
minradius:円半径の最小半径、デフォルトは0です
Maxradius:サークル半径の最大半径はデフォルト0になります(MinradiusとMaxradiusの両方がデフォルトである場合、Houghcircles関数は半径を自動的に計算します)
サンプルコード:
public static void main(string [] args){system.loadLibrary(core.native_library_name); mat src = imgcodecs.imread( "f://websbook_com_1589226.jpg"); mat dst = src.clone(); imgproc.cvtcolor(src、dst、imgproc.color_bgr2gray);マットサークル= new Mat(); imgproc.houghcircles(dst、circles、imgproc.hough_gradient、1、100、440、50、0、345); // imgproc.houghcircles(dst、circles、imgproc.hough_gradient、1、100、// 440、50、0、0); for(int i = 0; i <circles.cols(); i ++){double [] vcircle = circles.get(0、i); Point Center = new Point(vcircle [0]、vcircle [1]); int radius =(int)math.round(vcircle [2]); //サークルセンターimgproc.circle(src、center、3、new Scalar(0、255、0)、-1、8、0); //サークルアウトラインimgproc.circle(src、center、radius、new Scalar(0、0、255)、3、8、0); } imgcodecs.imwrite( "f://dst2.jpg"、src); }ソース画像:
出力画像:
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。