[OPENCV]cvHoughLines2使用说明

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];

 

posted @ 2017-07-05 15:07  Runtime69  阅读(1377)  评论(0编辑  收藏  举报