OpenCv中霍夫变换 HoughLines 和 HoughLinesP函数详解

1:首先给出函数定义 HoughLines

void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0 )

参数详解:

image:边缘检测的输出图像. 它应该是个灰度图 (但事实上是个二值化图)

lines:储存着检测到的直线的参数对 的容器

rho:参数极径 以像素值为单位的分辨率. 我们使用 1 像素.

theta:参数极角 以弧度为单位的分辨率. 我们使用 1度 (即CV_PI/180)

theta:要”检测” 一条直线所需最少的的曲线交点

srn and stn:参数默认为 0.
 

HoughLinesP

void HoughLinesP(InputArray image, OutputArray lines, double rho, double theta, int threshold,double minLineLength=0, double maxLineGap=0 )

参数详解:

image:边缘检测的输出图像. 它应该是个灰度图 (实际上是个二值化图) 

lines:储存着检测到的直线的参数对  的容器,也就是线段两个端点的坐标

rho :参数极径  以像素值为单位的分辨率. 我们使用 1 像素.

theta:参数极角  以弧度为单位的分辨率. 我们使用 1度 (即CV_PI/180)

threshold: 要”检测” 一条直线所需最少的的曲线交点 

minLinLength: 能组成一条直线的最少点的数量. 点数量不足的直线将被抛弃.线段的最小长度

maxLineGap:线段上最近两点之间的阈值
 

2:原理解释:

霍夫线变换:

  1. 霍夫线变换是一种用来寻找直线的方法.
  2. 是用霍夫线变换之前, 首先要对图像进行边缘检测的处理,也即霍夫线变换的直接输入只能是边缘二值图像.

实现原理:

        

 

上面的5和6是重点,笛卡尔坐标系中,同一条直线上的点,转到极坐标系下,会相交于一个点。

猜你喜欢

转载自blog.csdn.net/qq_37835727/article/details/123323084
今日推荐