Índice
2. O princípio da detecção do jardim Hough
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.