Python+OpenCV 图像处理之直线检测
霍夫变换是图像处理中从图像中识别几何形状的基本方法之一, 应用很广泛, 也有很多改进算法. 主要用来从图像中分离出具有某种相同特征的几何形状 (如, 直线, 圆等).
python 实现importcv2
importnumpyasnp
# 使用霍夫直线变换做直线检测, 前提条件: 边缘检测已经完成
__author__="boboa"
# 标准霍夫线变换
defline_detection_demo(image):
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
edges=cv2.Canny(gray,50,150,apertureSize=3)
lines=cv2.HoughLines(edges,1,np.pi/180,200)# 函数将通过步长为 1 的半径和步长为π/180 的角来搜索所有可能的直线
forlineinlines:
rho,theta=line[0]# line[0] 存储的是点到直线的极径和极角, 其中极角是弧度表示的
a=np.cos(theta)# theta 是弧度
b=np.sin(theta)
x0=a*rho
y0=b*rho
x1=int(x0+1000*(-b))# 直线起点横坐标
y1=int(y0+1000*(a))# 直线起点纵坐标
x2=int(x0-1000*(-b))# 直线终点横坐标
y2=int(y0-1000*(a))# 直线终点纵坐标
cv2.line(image,(x1,y1),(x2,y2),(0,0,255),2)