1.cvHoughLines2函数定义:
CvSeq *cvHoughLines2 { CvArr *image, void *line_storage, int method, double rho, double theta, int threshold, double param1 = 0, double param2 = 0 };
image: 输入图像,必须是8位的,但输入信息可以被看成是二值的(即所有非0像素被认为是相等的)。
line_storage: 指向保存结果位置的指针,既可以是内存块cvMemoryStorage,也可以是N*1的矩阵数列(行数N将有助于限制直线的最大数量)。
method: 可以是CV_HOUGH_STANDARD, CV_HOUGH_PROBABILISTIC, CV_HOUGH_MULTI_SCALE, 分别对应SHT, PPHT, SHT。
rho: 霍夫变换r长度的单位,一般设置为1。
theta: 霍夫变换θ弧度的单位,一般设置为CV_PI/180。
threshold: 认定为一条直线时在累计平面中必须达到的值。这个变量实际上表示支持所返回的直线的(在边缘图像的)点的数量。
param1: 对于PPHT, param1设置为将要返回的线段的最小长度。
param2: 对于PPHT, param2设置为一条直线上分离线段不能连成一条直线的分隔像素点数。
函数返回值: 返回找到的线段序列
可以使用下面的类似命令从序列中得到每一条直线或者线段:
float *line = (float *)cvGetSeqElem(lines,i); float rho = line[0]; float theta = line[1];