做霍夫变换之前记得提取图像边缘,是对图像边缘做霍夫变换
原理:
https://blog.csdn.net/ycj9090900/article/details/52944708
https://blog.csdn.net/abcjennifer/article/details/7448513API:
HoughLines(
InputArray src, // 输入图像,必须8-bit的灰度图像
OutputArray lines, // 输出的极坐标来表示直线
double rho, // 生成极坐标时候的像素扫描步长
double theta, //生成极坐标时候的角度步长,一般取值CV_PI/180
int threshold, // 阈值,只有获得足够交点的极坐标点才被看成是直线
double srn=0;// 是否应用多尺度的霍夫变换,如果不是设置0表示经典霍夫变换
double stn=0;//是否应用多尺度的霍夫变换,如果不是设置0表示经典霍夫变换
double min_theta=0; // 表示角度扫描范围 0 ~180之间, 默认即可
double max_theta=CV_PI ) // 一般情况是有经验的开发者使用,需要自己反变换到平面空间
HoughLinesP(
InputArray src, // 输入图像,必须8-bit的灰度图像
OutputArray lines, // 输出的极坐标来表示直线
double rho, //生成极坐标时候的像素扫描步长
double theta, //生成极坐标时候的角度步长,一般取值CV_PI/180
int threshold, // 阈值,只有获得足够交点的极坐标点才被看成是直线
double minLineLength=0;// 最小直线长度
double maxLineGap=0;// 最大间隔 )
扩充知识点:
size_t:
size_t其实是一种类型,类似于无符号整形(unsignted int)。可以理解成unsignted int size,当unsignted int用就可以了。
size_t一般用于指明数一个组长度,所以必然是个正数。它有足够大的大小来储存可能的最大数组。比如要将下标赋值给数组a[array_size]的每个元素:
const size_t array_size=10;int a[array_size-1];for(size_t i=0;i<size_t;++i )a[i]=i;说到底,size_t 当unsigned int用好了。