霍夫变换

霍夫线变换

参考:霍夫变换(Hough)

opencv中的霍夫线变换:在使用霍夫线变换前,首先要对图像进行边缘检测的处理,即霍夫线变换的直接输入只能是边缘二值图像。OpenCV支持三种不同的霍夫线变换:标准霍夫变换SHT、多尺度霍夫变换MSHT和累计概率霍夫变换PPHT。

vector<Vec2f> lines;//定义一个矢量结构lines用于存放得到的线段矢量集合
HoughLines(midImage, lines, 1, CV_PI / 180, 150, 0, 0);

累计概率霍夫变换:

vector<Vec4i> lines;//定义一个矢量结构lines用于存放得到的线段矢量集合
HoughLinesP(midImage, lines, 1, CV_PI / 180, 80, 50, 10);
for (size_t i = 0; i < lines.size(); i++)
{
    Vec4i l = lines[i];
    line(dstImage, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(186, 88, 255), 1, LINE_AA);
}

 霍夫圆变换

OpenCV中霍夫圆变换函数为HoughCircles(),通过霍夫变换检测灰度图像中的圆。不同于霍夫线变换需要输入二值图像,霍夫圆变换输入为灰度图像。

原文地址:https://www.cnblogs.com/larry-xia/p/9706793.html