直线检测相关
Hough变换是经典的检测直线的算法。其最初用来检测图像中的直线,同时也可以将其扩展,以用来检测图像中简单的结构。
变换图示
霍夫直线检测的两种方法
1.获取灰度图像2.canny边缘检测3.获取霍夫直线信息4.算出直线位置,画出每条直线
一:HoughLines霍夫变换
def line_detection(image):
gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
edges= cv.Canny(gray,50,150,apertureSize=3) #apertureSize是sobel算子大小,只能为1,3,5,7lines= cv.HoughLines(edges,1,np.pi/180,200) #函数将通过步长为1的半径和步长为π/180的角来搜索所有可能的直线for line inlines:
rho,theta= line[0] #获取极值ρ长度和θ角度
a = np.cos(theta) #获取角度cos值
b = np.sin(theta) #获取角度sin值
x0 = a * rho #获取x轴值
y0 = b * rho #获取y轴值 x0和y0是直线的中点
x1 = int(x0 + 1000*(-b)) #获取这条直线最大值