首页 » 技术分享 » 霍夫圆检测进行钢管检测

霍夫圆检测进行钢管检测

 
文章目录

通过霍夫圆检测来检测图片中的圆形。例如钢管检测

HoughCircles里面的参数是可以自己设置的,具体参数的设置,在文章的最后。

再把参数调整一下检测效果还会好一些。

import cv2 as cv
import numpy as np
image1 = cv.imread("zzw.jpg")  #读取要检测的图片
se = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
image = cv.morphologyEx(image1, cv.MORPH_GRADIENT, se)
cv.imwrite("image.png", image)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
circles= cv.HoughCircles(gray, cv.HOUGH_GRADIENT, 1, 10, param1=100, param2=35, minRadius=5, maxRadius=30)
for c in circles[0]:
    print(c)
    x, y, r = c
    b = np.random.randint(0, 256)
    g = np.random.randint(0, 256)
    r = np.random.randint(0, 256)
    cv.circle(image1,(c[0],c[1]),c[2],(255,0,0),5)  #将检测到的圆画到图片上
print(len(circles[0]))
cv.imwrite("hough_det.png", image1)  #保存图片

 

霍夫圆检测参数:

cv.HoughCircles(image, method, dp, minDist, circles, param1, param2, minRadius, maxRadius)

image:参数图像8位,单通道,灰度输入图像。

method:参数方法检测方法,参数圆输出找到的圆的矢量的方法。上面用的是基于梯度的霍夫圆检测。

dp:累加器分辨率与图像分辨率的反比。例如,如果dp=1,累加器的分辨率与输入图像相同。如果dp=2,累加器一半的宽度和高度。

minDist:检测圆中心之间的最小距离。如果参数为太小,除了一个真正的圆外,可能还会错误地检测到多个相邻圆。如果是太大,有些圆可能会丢失。

param1:第一个方法特定参数。在hough_梯度的情况下,它是较高的通过Canny边缘检测器的两个阈值(较低的阈值小两倍)。

param2:第二个方法特定参数。在hough_梯度的情况下,它是检测阶段圆心的累加器阈值。它越小,就越多 可能会检测到假圆。与较大的累加器值相对应的圆先返回。

minRadius:最小半径最小圆半径。

maxRadius:最大半径最大圆半径。如果<=0,则使用最大图像尺寸。如果<0,则返回没有找到半径的中心。
 

转载自原文链接, 如需删除请联系管理员。

原文链接:霍夫圆检测进行钢管检测,转载请注明来源!

0