当前位置: 首页 > news >正文

OpenCV特征检测(9)检测图像中直线的函数HoughLines()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

在二值图像中使用标准 Hough 变换查找直线。

该函数实现了用于直线检测的标准 Hough 变换或标准多尺度 Hough 变换算法。详见 http://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm 对 Hough 变换的详细解释。

HoughLines 是 OpenCV 中用于检测图像中直线的一个函数。它利用 Hough 变换来识别图像中的直线。Hough 变换是一种将图像中的直线问题转化为参数空间中的点积累问题的技术。通过这种方式,即使直线片段在原始图像中是断断续续的,也可以检测出来。

函数原型


void cv::HoughLines	
(InputArray 	image,OutputArray 	lines,double 	rho,double 	theta,int 	threshold,double 	srn = 0,double 	stn = 0,double 	min_theta = 0,double 	max_theta = CV_PI 
)		

参数

  • 参数image: 8 位单通道二值源图像。该图像可能在函数执行过程中被修改。

  • 参数lines: 输出的直线向量。每条直线由一个包含 2 或 3 个元素的向量表示(ρ, θ)或(ρ, θ, votes),其中 ρ 是从坐标原点(0,0)(图像的左上角)到直线的距离,θ 是直线旋转角度(以弧度为单位,0~垂直线,π/2~水平线),votes 是累加器的值。

  • 参数rho: 累加器的距离分辨率(以像素为单位)。

  • 参数theta: 累加器的角度分辨率(以弧度为单位)。

  • 参数threshold: 累加器的阈值参数。只有那些获得足够投票数(>threshold)的直线才会被返回。

  • 参数srn: 对于多尺度 Hough 变换,它是距离分辨率 ρ 的除数。粗略累加器的距离分辨率为 ρ,而精确累加器的分辨率为 ρ/srn。如果 srn=0 和 stn=0,将使用经典 Hough 变换。否则,这两个参数都应该为正数。

  • 参数stn: 对于多尺度 Hough 变换,它是角度分辨率 θ 的除数。

  • 参数min_theta: 对于标准 Hough 变换和多尺度 Hough 变换,检查直线的最小角度。必须介于 0 和 max_theta 之间。

  • 参数max_theta: 对于标准 Hough 变换和多尺度 Hough 变换,角度的上限。必须介于 min_theta 和 CV_PI 之间。累加器中的实际最大角度可能稍微小于 max_theta,具体取决于 min_theta 和 theta 参数。

代码示例


#include "opencv2/highgui.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/imgproc.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{// Declare the output variablesMat dst, cdst, cdstP;const char* default_file = "sudoku.png";// Loads an imageMat src = imread( "/media/dingxin/data/study/OpenCV/sources/images/line.jpg", IMREAD_GRAYSCALE );// Check if image is loaded fineif ( src.empty() ){printf( " Error opening image\n" );printf( " Program Arguments: [image_name -- default %s] \n", default_file );return -1;}// Edge detectionCanny( src, dst, 50, 200, 3 );// Copy edges to the images that will display the results in BGRcvtColor( dst, cdst, COLOR_GRAY2BGR );cdstP = cdst.clone();// Standard Hough Line Transformvector< Vec2f > lines;                                // will hold the results of the detectionHoughLines( dst, lines, 1, CV_PI / 180, 150, 0, 0 );  // runs the actual detection// Draw the linesfor ( size_t i = 0; i < lines.size(); i++ ){float rho = lines[ i ][ 0 ], theta = lines[ i ][ 1 ];Point pt1, pt2;double a = cos( theta ), b = sin( theta );double x0 = a * rho, y0 = b * rho;pt1.x = cvRound( x0 + 1000 * ( -b ) );pt1.y = cvRound( y0 + 1000 * ( a ) );pt2.x = cvRound( x0 - 1000 * ( -b ) );pt2.y = cvRound( y0 - 1000 * ( a ) );line( cdst, pt1, pt2, Scalar( 0, 0, 255 ), 3, LINE_AA );}// Show resultsimshow( "Source", src );imshow( "Detected Lines (in red) - Standard Hough Line Transform", cdst );// Wait and ExitwaitKey();return 0;
}

运行结果

在这里插入图片描述
从结果图上看,这个函数的效果并不是很理想。也许能通过调参能更好一些

相关文章:

OpenCV特征检测(9)检测图像中直线的函数HoughLines()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在二值图像中使用标准 Hough 变换查找直线。 该函数实现了用于直线检测的标准 Hough 变换或标准多尺度 Hough 变换算法。详见 http://homepages…...

力扣 中等 445.两数相加 II

文章目录 题目介绍题解 题目介绍 题解 首先反转两个链表&#xff0c;再调用 2. 两数相加 链接的代码&#xff0c;得到链表&#xff0c;最后将其翻转即可。 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {l1 reverseList(l1);l2 reverseList(l…...

华为云徐峰:AI赋能应用现代化,加速软件生产力跃升

2024年9月19日&#xff0c;在华为全联接大会2024的“AI赋能应用现代化&#xff0c;加速软件生产力跃升”论坛上&#xff0c;华为云PaaS服务产品部部长徐峰发表了主题演讲&#xff0c;介绍了未来应用智能化演进趋势&#xff0c;分享了智能化应用的行业实践&#xff0c;并发布了华…...

C发送邮件技巧:如何批量发送个性化邮件?

C发送邮件的高效步骤指南&#xff1f;C语言怎么实现SMTP发邮件&#xff1f; 为了提高邮件营销的效果&#xff0c;掌握C发送邮件的技巧&#xff0c;特别是如何批量发送个性化邮件&#xff0c;显得尤为重要。AokSend将详细介绍C发送邮件的技巧&#xff0c;帮助您在邮件营销中取得…...

基于python+spark的外卖餐饮数据分析系统设计与实现(含论文)-Spark毕业设计选题推荐

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…...

权限维持——Linux

前提 已经提权到管理员权限 一、创建账户 1、创建一个自定义密码的账户 已知&#xff0c;Linux中所有的用户的信息 存储在/etc/passwd这个文件中 。可以利用管理员权限修改这个文件&#xff0c; 添加一个账户 。 利用linux中的密码的编码算法 生成对应密码 &#xff08;不知…...

申请SSL证书闭坑方法

上来先问一个问题&#xff0c;为什么自己不能成立CA机构发SSL证书产品&#xff1f;为什么有的CA机构不能发被信任SSL证书产品&#xff1f; 真正原因是&#xff0c;SSL证书里面的根证书需要提前放入操作系统及浏览器&#xff0c;然而这些浏览器和操作系统的版本很多&#xff0c…...

linux 下域名解析错误

本文参考这里 作者&#xff1a;程序那点事儿 日期&#xff1a;2024/01/31 16:25 ping raw.githubusercontent.com&#xff0c;ping这个域名时&#xff0c;发现返回的是本地ip 原因是&#xff0c;配置了本地网关地址 192.168.xx.1 用命令查看默认网卡的网关&#xff1a;nmcli …...

基于单片机的角度、水位、温度、辅助热源、电机仿真

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机 采用滑动变阻器连接ADC0832数模转换器模拟角度传感器&#xff0c;水位传感器&#xff1b; 采样DS18B20温度传感器检测温度 通过LCD1602显示&#xff0c;第一行显示温度、水位、角度…...

泛函分析精解【1】

文章目录 平方可积函数平方可积函数一、定义二、性质三、公式四、计算五、例子六、例题 平方可积函数在泛函分析一、定义二、性质三、公式四、计算五、例子六、例题 L 2 空间 L_2空间 L2​空间定义性质公式计算例子例题 实变函数与罗曼积分实变函数与Riemann积分的联系实变函数…...

大数据毕业设计选题推荐-租房数据分析系统-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

有关shell指令练习2

写一个shell脚本&#xff0c;将以下内容放到脚本中 在家目录下创建目录文件&#xff0c;dir dir下创建dir1和dir2 把当前目录下的所有文件拷贝到dir1中&#xff0c; 把当前目录下的所有脚本文件拷贝到dir2中 把dir2打包并压缩为dir2.tar.xz 再把dir2.tar.xz移动到dir1中 …...

Exception与Error:Java中的异常处理

在Java编程中&#xff0c;异常处理是一个非常重要的概念。它允许程序在遇到错误时优雅地处理&#xff0c;而不是突然崩溃。Java通过Exception和Error类来区分不同类型的错误情况&#xff0c;并通过一套完整的异常处理机制来管理这些错误。 异常&#xff08;Exception&#xff…...

HashMap哈希表练习

一、练习要求 使用顺序表和单链表通过C语言实现一个HashMap的数据结构&#xff0c;实现以下功能&#xff1a; 1、PHashMap createHashMap(int size); 2、int putValue(PHashMap map, int key, EleType value); 3、EleType getValue(PHashMap map, int key); 4、printHashMap(PH…...

字节豆包C++一面-面经总结

talk is cheap show me the code lc206&#xff1a;链表反转&#xff1a;给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 class Solution { public:ListNode* reverseList(ListNode* head) {if(headnullptr||!head->next)return head…...

极狐GitLab 17.4 重点功能解读【三】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

【unity进阶知识4】封装unity协程工具,避免 GC(垃圾回收)

文章目录 前言封装协程工具类&#xff0c;避免 GC&#xff08;垃圾回收&#xff09;使用1.使用默认方式使用协程2.使用自定义的 CoroutineTool 工具类来等待不同的时间 完结 前言 在 Unity 中&#xff0c;使用 yield return null 、yield return new WaitForEndOfFrame()等会导…...

Source insight安装使用笔记

Source insight安装使用笔记 1.安装包下载2.安装记录3. 使用教程1.安装包下载 官网下载 可修改 C:\ProgramData\Source Insight\4.0\si4.lic 将Expiration=”2017-XX-XX”中的2017修改为2030。 本地下载 2.安装记录...

golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…...

Netty源码解析-锁机制

Netty基本介绍&#xff0c;参考 Netty与网络编程 为了提高性能&#xff0c;Netty对锁也做了大量优化 1、锁优化技术 Netty大量使用了锁优化技术&#xff1a; 1.1 减小锁粒度1.2 减少锁对象的空间占用1.3 提高锁的性能1.4 根据不同业务场景选择合适锁1.5 能不用锁则不用锁 …...

手把手教你用春联生成模型中文base:网页界面操作,无需代码生成专业春联

手把手教你用春联生成模型中文base&#xff1a;网页界面操作&#xff0c;无需代码生成专业春联 春节将至&#xff0c;贴春联是中国家庭的传统习俗。但你是否遇到过这样的困扰&#xff1a;想写一副原创春联却缺乏灵感&#xff0c;上网搜索又发现千篇一律&#xff1f;现在&#…...

Java 代码质量保障:静态分析与代码审查实践

Java 代码质量保障&#xff1a;静态分析与代码审查实践代码质量不是测试阶段才考虑的事情&#xff0c;而是应该从第一行代码开始。作为一名经历过多次代码重构的 Java 开发者&#xff0c;我深刻体会到&#xff1a;预防胜于治疗。今天分享一套完整的代码质量保障体系&#xff0c…...

OpenClaw+GLM-4.7-Flash:个人财务管理自动化实践

OpenClawGLM-4.7-Flash&#xff1a;个人财务管理自动化实践 1. 为什么需要自动化财务管理 每个月末&#xff0c;我都会面对一堆散乱的电子账单和银行流水。手动整理这些数据不仅耗时&#xff0c;还容易出错。直到我发现OpenClaw与GLM-4.7-Flash的组合&#xff0c;才真正实现了…...

如何快速改善论文写作的语言能力?

对于许多非英语母语的科研工作者而言&#xff0c;从实验数据到最终发表&#xff0c;横亘在中间的最大障碍往往不是创新性不足&#xff0c;而是语言表达上的“无力感”。每当完成一篇心血之作&#xff0c;面对屏幕上的文字&#xff0c;内心总充满了自我怀疑&#xff1a;这句话的…...

计算机毕业设计springboot智慧校园服务系统 基于SpringBoot的高校智慧校园综合管理平台的设计与实现 基于SpringBoot与微信小程序的数字化校园服务系统的设计与开发

计算机毕业设计springboot智慧校园服务系统 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着社会的快速发展和信息技术的全面进步&#xff0c;传统的教育教学模式面临着诸多挑…...

SDMatte与LSTM时序模型结合:处理视频连续帧的稳定抠图

SDMatte与LSTM时序模型结合&#xff1a;处理视频连续帧的稳定抠图 1. 引言&#xff1a;视频抠图的挑战与机遇 视频抠图技术一直是影视后期和直播领域的核心需求。传统方法在处理动态场景时常常面临边缘闪烁、细节丢失和时间不一致等问题。想象一下&#xff0c;当你在视频会议…...

LabelImg图像标注工具:3分钟掌握高效目标检测数据标注技巧

LabelImg图像标注工具&#xff1a;3分钟掌握高效目标检测数据标注技巧 【免费下载链接】labelImg LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check ou…...

电子技术——MOSFET的电流-电压特性解析

1. MOSFET基础&#xff1a;从结构到导电机理 要理解MOSFET的电流-电压特性&#xff0c;我们得先拆解它的物理结构。想象MOSFET就像个三层夹心饼干&#xff1a;最下层是硅基底&#xff08;p型或n型半导体&#xff09;&#xff0c;中间是薄如蝉翼的绝缘层&#xff08;二氧化硅&am…...

高效掌控暗影精灵设备:开源工具OmenSuperHub的四大突破

高效掌控暗影精灵设备&#xff1a;开源工具OmenSuperHub的四大突破 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 告别原厂软件臃肿困扰&#xff0c;体验纯净硬件控制新方式 OmenSuperHub是一款专为惠普暗影精灵笔记本打造…...

run-aspnetcore-microservices 购物车微服务:Redis分布式缓存与Grpc同步通信实现

run-aspnetcore-microservices 购物车微服务&#xff1a;Redis分布式缓存与Grpc同步通信实现 【免费下载链接】run-aspnetcore-microservices aspnetrun/run-aspnetcore-microservices: 是一个用于部署和运行 ASP.NET Core 微服务应用程序的开源项目&#xff0c;提供了一个简单…...