直线检测:霍夫变换 HoughLines 和 HoughLinesP

这篇博客介绍了OpenCV中的霍夫变换用于直线检测,包括标准霍夫线变换和统计概率霍夫线变换的原理、参数及代码实现。文章强调了霍夫变换前需进行边缘检测,并解析了极坐标系中直线表示的特性。
摘要由CSDN通过智能技术生成

第一部分:函数介绍

1、标准霍夫线变换
void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0 )
参数:
image:边缘检测的输出图像. 它应该是个灰度图 (但事实上是个二值化图)

lines:储存着检测到的直线的参数对 的容器

rho:参数极径 以像素值为单位的分辨率. 我们使用 1 像素.

theta:参数极角 以弧度为单位的分辨率. 我们使用 1度 (即CV_PI/180)

theta:要”检测” 一条直线所需最少的的曲线交点

srn and stn: 参数默认为0.

2、统计概率霍夫线变换
void HoughLinesP(InputArray image, OutputArray lines, double rho, double theta, int threshold,double minLineLength=0, double maxLineGap=0 )
参数:

image: 边缘检测的输出图像. 它应该是个灰度图 (但事实上是个二值化图) *

lines: 储存着检测到的直线的参数对 的容器,也就是线段两个端点的坐标

rho :  参数极径 以像素值为单位的分辨率. 我们使用 1 像素.

theta: 参数极角 以弧度为单位的分辨率. 我们使用 1度 (即CV_PI/180)

threshold: 要”检测” 一条直线所需最少的的曲线交点

minLinLength: 能组成一条直线的最少点的数量. 点数量不足的直线将被抛弃.线段的最小长度

maxLineGap:线段上最近两点之间的阈值

备注:
(1)霍夫线变换是一种用来寻找直线的方法.
(2)霍夫线变换之前, 首先要对图像进行边缘检测的处理,即霍夫线变换的直接输入只能是边缘二值图像.

第二部分:原理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面的5和6是重点,笛卡尔坐标系中,同一条直线上的点,转到极坐标系下,会相交于一个点。

第三部分:代码实现

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <stdio.h>
#include <iostream>
 
using namespace cv;
using namespace std;
 
int main(int argc, char** argv)
{
   
 const char* filename = argc >= 2 ? argv[1] : "
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翱翔的小鸟2001

您的鼓励是我最大的动力!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值