霍夫变换是一种被广泛使用的利用数学等式的参数形式在图像中检测形状的技术。
例如直线、椭圆、圆等形状。
霍夫变换可以检测任何能以参数形式表示的形状,随着形状的复杂(维数的增加,例如球体),计算的消耗也会增加。
我们通常考虑简单的霍夫形状,例如直线和圆。
霍夫直线
效果图
步骤
- 将图像置灰
调用
Imgproc.HoughLinesP(cannyEdges, lines, 1, Math.PI / 180, 50, 20, 20)
方法获取直线的数据- 第一个参数:图像输入
- 第二个参数:图像输出
- 第三个参数:图像指定像素中
r
的解析度 - 第四个参数:图像指定像素中
θ
的解析度 - 第五个参数:直线上点数的阈值
- 第六个参数:直线上点数的最小值
在图像上绘制直线
封装
使用
霍夫圆
效果图
步骤
霍夫圆与霍夫直线类似,只是等式改变了,调用
Imgproc.HoughCircles(cannyEdges, circles, Imgproc.CV_HOUGH_GRADIENT, 1, cannyEdges.rows() / 15);
获取圆的数据