OpenCVSharp入门教程 特征提取③——HoughLinesP直线寻找,直线提取
文章目录
- 一、前文
- 二、算法流程
- 三、界面布局
- 四、功能实现
- 4.1 打开图片
- 4.2 HoughLinesP直线提取—源码
- 4.3 HoughLinesP直线提取—参数讲解
- 五、运行效果图
- 六、参考
一、前文
Hough变换
经典的直线检测算法
二、算法流程
- 高斯模糊
- Canny边缘检测
- HoughLinesP直线寻找,直线提取
三、界面布局
- 一个
Label
- N个
Button
- 三个
Picture
四、功能实现
4.1 打开图片
private void openFileBtn_Click(object sender, EventArgs e){OpenFileDialog openfiledialog = new OpenFileDialog();openfiledialog.Filter = "PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif";openfiledialog.RestoreDirectory = true;if (openfiledialog.ShowDialog() == DialogResult.OK){Console.WriteLine(openfiledialog.FileName);fileName = openfiledialog.FileName;//Mat src = new Mat("foo.png", LoadMode.Color);Mat src = new Mat(fileName);//Mat src = new Mat(fileName, ImreadModes.Color);var frameBitmap = BitmapConverter.ToBitmap(src);pictureBox1.Image?.Dispose();pictureBox1.Image = frameBitmap;}}
4.2 HoughLinesP直线提取—源码
private void houghLinesBtn_Click(object sender, EventArgs e)
{cannyBtn_Click(sender, e);mOutput = new Mat(mInput.Rows, mInput.Cols, MatType.CV_8UC4);mInput.CopyTo(mOutput);double rho = 1;double theta = 1;int threshold = 10;double minLineLength = 0;double maxLineGap = 0;var res = Cv2.HoughLinesP(edges,rho: rho,theta: theta / 100.0,threshold: threshold,minLineLength: minLineLength,maxLineGap: maxLineGap);for (int i = 0; i < res.Length; i++){Scalar color = Scalar.RandomColor();Cv2.Line(mOutput, res[i].P1, res[i].P2,color: color,thickness: 2,lineType: LineTypes.Link8);}srcPictureBox.Image = BitmapConverter.ToBitmap(mInput);grayPictureBox.Image = BitmapConverter.ToBitmap(edges);dstPictureBox.Image = BitmapConverter.ToBitmap(mOutput);
}
4.3 HoughLinesP直线提取—参数讲解
//
// 摘要:
// Finds lines segments in a binary image using probabilistic Hough transform.
//
// 参数:
// image:
//
// rho:
// Distance resolution of the accumulator in pixels
//
// theta:
// Angle resolution of the accumulator in radians
//
// threshold:
// The accumulator threshold parameter. Only those lines are returned that get enough
// votes ( > threshold )
//
// minLineLength:
// The minimum line length. Line segments shorter than that will be rejected. [By
// default this is 0]
//
// maxLineGap:
// The maximum allowed gap between points on the same line to link them. [By default
// this is 0]
//
// 返回结果:
// The output lines. Each line is represented by a 4-element vector (x1, y1, x2,
// y2)
public static LineSegmentPoint[] HoughLinesP(InputArray image, double rho, double theta, int threshold, double minLineLength = 0, double maxLineGap = 0);
image
,灰度图片输入rho
,步长为1的半径theta
,步长为π/180的角来,来搜索所有可能的直线threshold
,阈值,大于阈值 threshold 的线段才可以被确认为直线。该值越小,判定出的直线越多;值越大,判定出的直线就越少。minLineLength
,线段的最短长度,长度小于该值的线段会被忽略maxLineGap
,两条线段之间的最大间隔,间隔小于该值的两条线会被当成一条线
五、运行效果图
从左到右
- 第一张是原图
- 第二张是高斯模糊的结果图
- 第三张是HoughLinesP直线提取的结果图
六、参考
OpenCV—直线检测
觉得好,就一键三连呗(点赞+收藏+关注)
OpenCVSharp入门教程 特征提取③——HoughLinesP直线寻找,直线提取相关推荐
- OpenCVSharp入门教程 特征提取①——MSER区域特征提取Maximally Stable Extremal Regions
文章目录 一.前文 二.特征提取流程 三.界面布局 四.功能实现 4.1 打开图片 4.2 特征提取-源码 4.3 特征提取-参数讲解 4.4 特征提取-Detect和DetectRegions 五. ...
- OpenCVSharp入门教程——导读
文章目录 一.基础篇 二.特征提取 一.基础篇 OpenCVSharp入门教程 基础篇①--通过NuGet安装OpenCVSharp库 OpenCVSharp入门教程 基础篇②--获得图片像素及数据转 ...
- OpenCVSharp入门教程 基础篇⑤——GaussianBlur高斯模糊算法
文章目录 一.前文 二.GaussianBlur高斯模糊算法流程 三.界面布局 四.功能实现 4.1 打开图片 4.2 GaussianBlur高斯模糊-源码 4.3 GaussianBlur高斯模糊 ...
- 宏宇社:国外lead入门教程(二)如何寻找任务联盟申请账号
宏宇社:国外lead入门教程(二)如何寻找任务联盟申请账号 宏宇社:如何寻找任务联盟申请账号 国外的广告联盟是非常多的,你只需要在Google上用任务关键词+affiliate搜索,会有很多结果. 比 ...
- 【MATLAB Image Processing Toolbox 入门教程三】快速入门之“在多光谱图像中寻找植被”
[MATLAB Image Processing Toolbox 入门教程三] 本篇摘要 一.从多光谱图像文件导入彩色红外通道 二.构建近红外光谱散射图 三.计算植被系数并显示其定位 四.综合实例部分 ...
- 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...
- 写给运营同学和初学者的SQL入门教程
作者简介 多肉,饿了么资深python工程师.曾在17年担任饿了么即时配送众包系统的研发经理,这篇文章最早的版本就诞生于那段时间,目前负责配送相关业务系统的整体稳定性建设.个人比较喜欢c和python ...
- Python 数据科学入门教程:机器学习:回归
Python 数据科学入门教程:机器学习:回归 原文:Regression - Intro and Data 译者:飞龙 协议:CC BY-NC-SA 4.0 引言和数据 欢迎阅读 Python 机器 ...
- 超详细 redis入门教程
redis入门教程 [root@localhost redis-5.0.8]# redis-cli -p 6379 #使用redis客户端进行连接 127.0.0.1:6379> auth ro ...
最新文章
- Java网页数据采集器[下篇-数据查询]【转载】
- jquery计算表格列,求和
- 完全命令行.NET开发
- 实用场景解析:那些漂亮的可视化图表都是如何做的?
- #pragma once与#ifndef的区别?
- SEO十心要诀 细节决定成败
- 基于ssm的个人博客_基于 CentOS7 搭建 WordPress 个人博客
- matplotlib的基本使用1
- 常量数组 python_python数据科学系列:numpy入门详解教程
- 收藏 | 深度学习pytorch训练代码
- SEO长尾理论,关键词需求覆盖理论
- 如何计算加权和及矩阵乘法运算回顾
- c语言单片机编程 实例教程,51单片机的C语言编程基础及实例教程
- 基于IIS Live Smooth Streaming技术流媒体直播系统
- 微信小视频显示服务器正在升级,更新微信版本后 朋友圈小视频提示显示录制时间太短的解决办法...
- PANTONE 色号
- 【方法】Latex使用BibTeX生成参考文献列表
- 模块电路选型(7)----人机交互模块
- sqlserver 中时间转变为coledatetime,再到systemtime
- linux ntpdate
热门文章
- MStar平台编译环境安装
- C# Basler相机采集图像
- VS2008+VP5开发环境配置
- 星环研发总监为你揭秘TDH8.0的前因后果 | TDH8.0 使用必读 3
- unity如何改变重力方向
- [转帖]奋斗5年 从月薪3500到700万!
- 极简 ssh之 scp
- 徐州泰奇妙机器人编程教育_机器人和STEM编程教育,帮助自闭症儿童重归社会...
- linux trac git,trac安装、配置、中文化、支持git(Linux,Mac)
- c语言无符号整型除法,用位运算的方法实现无符号整数的除法,游戏编程 | 李大仁博客...