如何在OpenCV Python中实现概率Hough变换?
Probabilistic Hough Transform是Hough Transform的优化版本。即使是具有两个参数的直线,Hough变换也需要大量计算。概率Hough变换并不考虑所有点,它仅考虑随机的一部分点,这已足以检测直线。我们可以遵循以下步骤在图像上实现概率Hough变换-
- 导入所需的库。在以下所有示例中,所需的Python库为 OpenCV 。确保您已经安装了它。
-
使用 cv2.imread() 读取输入图像。使用此方法读取的RGB图像以BGR格式表示。选择性地将读取的BGR图像分配给img。
-
现在,使用 cv2.cvtColor() 函数将BGR图像转换为灰度图像。选择性地将转换后的灰度图像分配给gray。
-
对灰度图像进行阈值处理,将其转换为二进制图像。调整第二个参数(threshValue)以获取更好的二进制图像。
-
使用Canny边缘检测器在二进制图像中查找边缘(您可以使用任何其他边缘检测器来检测边缘)。
- 使用 cv2.HoughLinesP() 对边缘图像应用概率Hough变换。它返回检测到的直线的坐标。
- 在图像上绘制直线并显示输出图像。
让我们查看一些示例,以便更清楚地理解。
输入图像
我们将在以下示例中使用此图像作为输入文件。
示例
在此示例中,我们找到图像上的概率Hough Line变换,并具有以下线性属性-
- minLineLength = 10
-
maxLineGap = 5
输出结果
运行上述程序后,它将产生以下窗口−
第一个窗口”Edges”显示使用Canny边缘检测算法检测到的边缘。第二个窗口”houghlines.jpg”显示使用概率霍夫线变换检测到的直线。