Testando a Detecção de Círculo Hough Usando Python

Índice

1. Propósito

2. O princípio da detecção do jardim Hough

3. Use o teste opencv


1. Propósito

 Grave o processo de escrita da detecção do círculo Hough usando python

2. O princípio da detecção do jardim Hough

um pouco! Não me culpe, isso envolve princípios matemáticos. Vou adicioná-lo quando tiver tempo, vamos usá-lo primeiro. (Definitivamente não é que eu não entenda. Hee hee hee)

3. Use o teste opencv

Primeiro use uma imagem bem padrão para testar, uma imagem que desenhei diretamente no ptp:

import cv2 as cv
import numpy as np
 
#读取文件
origin = cv.imread('images/origin3.png', 1)
img = cv.imread('images/origin3.png', 0)

#霍夫圆检测
circles = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 100, param1=50, param2=30, minRadius=0, maxRadius=100)
 
circles = np.uint16(np.around(circles))
 
#将检测到的圆圈标上去
for i in circles[0, :]:  # 遍历矩阵每一行的数据
    cv.circle(origin, (i[0], i[1]), i[2], (0, 255, 0), 2)
    cv.circle(origin, (i[0], i[1]), 2, (0, 0, 255), 3)
 
#显示图像
cv.imshow("image", origin)
cv.waitKey(0)
cv.destroyAllWindows()

O reconhecimento funciona perfeitamente:

Usando uma imagem aleatória:

Ajuste os parâmetros de param1 e param2 e raio:

import cv2 as cv
import numpy as np
 
#读取文件
origin = cv.imread('images/origin1.png', 1)
img = cv.imread('images/origin1.png', 0)

# cv.imshow("image", origin)
# cv.waitKey(0)

#霍夫圆检测
circles = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 13, param1=50, param2=18, minRadius=0, maxRadius=20)
 
circles = np.uint16(np.around(circles))
 
#将检测到的圆圈标上去
for i in circles[0, :]:  # 遍历矩阵每一行的数据
    cv.circle(origin, (i[0], i[1]), i[2], (0, 255, 0), 2)
    cv.circle(origin, (i[0], i[1]), 2, (0, 0, 255), 3)
 
#显示图像
cv.imshow("image", origin)
cv.waitKey(0)
cv.destroyAllWindows()

Mais dois pontos são identificados, e o raio desses dois pontos é relativamente pequeno, por isso é fácil de manusear. Dirija-o oh triste minRádio para controle

 circles = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 13, param1=50, param2=18, minRadius=15, maxRadius=20)

O resultado final: (o efeito de detecção ainda é muito bom)

 Obrigado por ler, se você tiver alguma dúvida, pode comentar nos comentários.

Acho que você gosta

Origin blog.csdn.net/qq_39298227/article/details/126675097
Recomendado
Clasificación