[opencv] Transformación de círculo de Hough (encuentre el círculo en la imagen, el acumulador 3D realiza la transformación de Hough y el método de gradiente de Hough utilizando la información de gradiente del borde).

4_14_ Transformación del círculo de Hough: documentación oficial china de OpenCV

Aprenda a usar la transformada de Hough para encontrar círculos en imágenes. - Veremos la siguiente función: cv.HoughCircles ()

 teoría

Un círculo se representa matemáticamente como , donde (xcenter, ycenter) es el centro del círculo y r es el radio del círculo. A partir de la ecuación, podemos ver que tenemos 3 parámetros , por lo que necesitamos un acumulador 3D para la transformada de Hough , que será muy ineficiente. Por lo tanto, OpenCV utiliza un método más complicado, el método de gradiente de Hough que utiliza la información de gradiente del borde (el gradiente de Hough debe prestar más atención para comprenderlo).

La función que usamos aquí es **cv.HoughCircles**(). Tiene muchos parámetros que están bien explicados en la documentación. Así que vayamos directamente al código.

import numpy as np
import cv2 as cv
img = cv.imread('opencv-logo-white.png',0)
img = cv.medianBlur(img,5)
cimg = cv.cvtColor(img,cv.COLOR_GRAY2BGR)
circles = cv.HoughCircles(img,cv.HOUGH_GRADIENT,1,20,
                            param1=50,param2=30,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
    # 绘制外圆
    cv.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
    # 绘制圆心
    cv.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
cv.imshow('detected circles',cimg)
cv.waitKey(0)
cv.destroyAllWindows()

El resultado es el siguiente: 

 

Supongo que te gusta

Origin blog.csdn.net/dujuancao11/article/details/122451269
Recomendado
Clasificación