【计算机视觉】基于OpenCV的直线检测

直线检测原理

霍夫变换是图像处理必然接触到的一个算法,它通过一种投票算法检测具有特定形状的物体,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果,该方法可以进行圆,直线,椭圆等形状的检测。在车道线检测中,当初考虑的一个方案便是采用霍夫变换检测直线进行车道线提取。

x,y坐标系中直线上的一个点对应到ρ,θ坐标系中是一条曲线。

x,y坐标系中直线上的所有点在ρ,θ坐标系中对应的所有曲线交汇到一个点上。

ρ,θ坐标系中的一个点对应x,y坐标系中的一条直线。

使用opencv进行直线检测

在使用霍夫变换侦测直线前,须先利用边缘检测算法来减少图像的数据量、剔掉不相关的信息,保留图像中重要的结构特征。

2.1 图像灰度化

python 复制代码
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

原始图像与灰度化的图像如下:

2.2 边缘检测

利用边缘检测算法(Canny、Sobel、Laplacian等)来检测物体边缘,代码如下:

python 复制代码
canny = cv2.Canny(gray_img, 30, 150)

2.3 霍夫变换

使用霍夫变换来得出直线检测结果,代码如下:

python 复制代码
# 使用HoughLinesP检测线段
lines = cv2.HoughLinesP(canny, 1, np.pi / 180, 180, minLineLength=100, maxLineGap=10)

# 检查是否检测到线段
if lines is not None:
    for line in lines:
        x1, y1, x2, y2 = line[0]
        cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)

cv2.imshow('original', img)

2.4 完整代码

python 复制代码
import cv2
import numpy as np

img = cv2.imread("Resources/img_1.png")

cv2.imshow("Output",img)
cv2.waitKey(0)

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('gray', gray_img)
cv2.waitKey(0)

canny = cv2.Canny(gray_img, 30, 150)
cv2.imshow('canny', canny)
cv2.waitKey(0)

# 使用HoughLinesP检测线段
lines = cv2.HoughLinesP(canny, 1, np.pi / 180, 180, minLineLength=100, maxLineGap=10)

# 检查是否检测到线段
if lines is not None:
    for line in lines:
        x1, y1, x2, y2 = line[0]
        cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)

cv2.imshow('original', img)

cv2.waitKey(0)
相关推荐
waterfeeling1 小时前
用 Context7 做一次点云配准的调研—测试—报告闭环:鲁棒 ICP
人工智能
Data-Miner5 小时前
面对 AI 大模型智能涌现,如何从技术层面保护好隐私与数据安全?
大数据·人工智能
hpoenixf5 小时前
当 AI 开始谈“买什么”,研究助手离投顾和交易还有多远?
人工智能
大模型真好玩5 小时前
如何让视频模型对你言听计从?结构化提示词助你生成电影级画面
人工智能·agent·deepseek
zhang133830890756 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
特立独行的猫a6 小时前
会说确认叫车才下单-启元机器人官方滴滴打车技能源码详解
人工智能·机器人·技能·启元机器人
老金带你玩AI6 小时前
GPT-6.1 Terra上线:更便宜了,干活到底怎么样?
人工智能
会议咨询6 小时前
2027年电力电子、人工智能与大数据国际会议(PEABD 2027)
大数据·人工智能·电力电子
Jsundoku6 小时前
第五章 深度学习 -- 卷积神经网络
人工智能·深度学习·cnn
水如烟7 小时前
孤能子视角:SEP《人工智能的认识论》EIS读法·理解——理解幻觉与解压缩幻觉:同一缺口,两份报告
人工智能