21xrx.com
2024-12-22 14:39:51 Sunday
登录
文章检索 我的文章 写文章
OpenCV Hough算法直线检测的源代码
2023-11-19 07:10:57 深夜i     --     --
OpenCV Hough algorithm line detection source code

Hough变换是一种在图像处理中常用于直线和圆检测的技术。OpenCV库提供了一个方便的方法来实现Hough直线检测。以下是使用OpenCV库中的Hough算法实现直线检测的示例源代码。

Python

import cv2

import numpy as np

# 读取图像

image = cv2.imread('image.jpg')

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

edges = cv2.Canny(gray, 50, 150, apertureSize=3)

# 进行Hough直线变换

lines = cv2.HoughLines(edges, 1, np.pi/180, 200)

# 绘制检测到的直线

if lines is not None:

  for line in lines:

    rho, theta = line[0]

    a = np.cos(theta)

    b = np.sin(theta)

    x0 = a * rho

    y0 = b * rho

    x1 = int(x0 + 1000 * (-b))

    y1 = int(y0 + 1000 * (a))

    x2 = int(x0 - 1000 * (-b))

    y2 = int(y0 - 1000 * (a))

    cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

# 显示结果

cv2.imshow('Image', image)

cv2.waitKey(0)

cv2.destroyAllWindows()

在上述代码中,首先我们使用`cv2.imread()`函数读取了一张图像。然后将图像转换为灰度图像并使用`cv2.Canny()`函数进行边缘检测。

接下来,我们使用`cv2.HoughLines()`函数进行Hough直线变换。该函数采用的参数包括边缘图像、距离分辨率、角度分辨率和阈值。根据实际需要调整这些参数以获得最佳结果。

最后,我们使用`cv2.line()`函数在原始图像上绘制检测到的直线。绘制直线需要知道直线的极坐标表示形式,因此我们从`cv2.HoughLines()`返回的结果中提取出距离和角度。然后,我们计算直线的两个端点,并使用`cv2.line()`函数将直线绘制到原始图像上。

最后,使用`cv2.imshow()`函数显示结果,并使用`cv2.waitKey()`和`cv2.destroyAllWindows()`避免窗口被意外关闭。

这只是一个简单的示例,您可以根据需要进行更复杂的调整和改进。希望这个源代码能够帮助您理解和使用OpenCV库中的Hough直线检测算法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复