Os princípios da detecção do círculo de Hough e da detecção de linha de Hough são semelhantes. Para círculos, eles são expressos como C: (X, Y, R) no sistema de coordenadas de parâmetros.
função:
Imgproc.houghcircles (imagem MAT, circuitos MAT, método int, duplo DP, Mindist Double, Double Param1, Double Param2, int minradius, int maxradius)
Descrição do parâmetro:
Imagem: imagem de origem
Círculos: o vetor de saída do círculo detectado (x, y, r)
Método: o método de detecção usado, atualmente existe apenas um imgproc.hough_gradient
DP: o inverso da proporção entre a imagem do acumulador no centro do círculo e a imagem de origem
Mindista: distância mínima entre os centros do círculo detectado
Param1: os parâmetros correspondentes do método de detecção definido por método. Para Hough_Gradiente, indica o alto limite do operador de detecção de borda (o limite baixo é metade do limite alto) e o valor padrão é 100
Param2: Os parâmetros correspondentes do método de detecção definidos pelo método são para hough_gradient, indicando o valor limite do acumulador. Quanto menor o valor, o círculo não relacionado detectou
MinRadius: o raio mínimo do raio do círculo, o padrão é 0
Maxradius: O raio máximo do raio do círculo, padrão para 0 (se o minradius e o maxradius forem inadimplentes para 0, a função Houghcircles calculará automaticamente o raio)
Código de exemplo:
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); Mat Circles = New Mat (); Imgproc.houghcircles (dst, círculos, imgproc.hough_gradient, 1, 100, 440, 50, 0, 345); // imgproc.houghcircles (dst, círculos, imgproc.hough_gradient, 1, 100, // 440, 50, 0, 0); for (int i = 0; i <circles.cols (); i ++) {duplo [] vcircle = circles.get (0, i); Ponto de ponto = novo ponto (vcircle [0], vcircle [1]); int raio = (int) math.round (vcircle [2]); // Circle Center IMGProc.circle (SRC, centro, 3, novo escalar (0, 255, 0), -1, 8, 0); // círculo de esboço imgproc.circle (src, centro, raio, novo escalar (0, 0, 255), 3, 8, 0); } Imgcodec.imwrite ("f: //dst2.jpg", src); }Imagem de origem:
Imagem de saída:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.