opencv c++ 边缘提取

news2024/10/3 8:26:42

1、边缘

1.1 边缘定义

        以图像像素值突变最大的方向作为边缘法线,与边缘法线垂直的就是边缘。

        边缘强度:局部图像上的像素值突变程度(图像局部一阶梯度和二阶梯度值)。

        

 1.2 边缘类别

跃迁类型                                                           屋脊类型

 2、边缘提取

2.1 基于梯度的边缘提取

        步骤:高斯模糊去噪(选用3×3的核),再基于梯度提取边缘(使用robert算子、sobels算子、prewitt算子),最后对图像梯度进行阈值处理,大于T的保留,小于T的舍弃。

         缺点:单一阈值使得边缘图像不够连贯

 2.2 Canny边缘提取

        步骤:

        1、滤波处理(高斯滤波)。

        2、使用梯度算子获取梯度值G、梯度方向\Theta

        3、非最大抑制:保留与\Theta垂直方向上,梯度值最大的像素点,如下左1、2图上,当红框的像素点值,是在橙色箭头方向上最大的,则保留。

在实际应用中为减少运算量,只会对如下\frac{\pi }{4}\frac{\pi }{2}\frac{3\pi }{4}等角度的梯度进行非最大抑制。

        4、高低阈值链接,分别设定高低阈值T1、T2,一般T1/T2 = 2~3,将像素值大于T1的像素点全部保留,小于T2的全部舍弃,T1到T2之间的如果在其八邻域内高阈值保留像素点,则保留,反之丢弃。

  

 代码示例:

static void cannny_track_bar(int b, void* image_data) {
	//canny
	Mat image = *((Mat*)image_data);
	Mat edge1;
	Canny(image, edge1, b, b*2, 3);
	imshow("canny", edge1);
}
void edge_catch(Mat& image)
{
	namedWindow("canny", WINDOW_FREERATIO);
	int t = 50;
	createTrackbar("canny bar", "canny", &t, 100, cannny_track_bar,(void*)&image);
	cannny_track_bar(50, &image);
}

 结果:

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

645仪表以JSON格式上发方法

1.概述 之前我们已经介绍了Modbus RTU仪表实现JSON格式上发云服务器的方法,类似的现在也可以支持645协议的仪表通过JSON格式上发服务器。 卓岚实现645仪表转JSON网关的特点有: 1.提供透传、MQTT、POST、GET等上位机协议,结合JSON格式进行传…

CSS三大特性之层叠性

CSS的三个特性:层叠性,继承性,优先级 层叠性: 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式,层叠性主要解决样式冲突的问题。 层叠性原则: 样式冲突&#xff0c…

Deadlock found when trying to get lock; try restarting transaction

报错详情 Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction The error may involve com.iss.cms.fdrb.common.dao.entity.InterfaceQueue.updateInt…

数据库、计算机网络,操作系统刷题笔记6

数据库、计算机网络,操作系统刷题笔记6 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle&…

RK3588平台开发系列讲解(Thermal篇)Thermal介绍及用法

平台内核版本安卓版本RK3588Linux 5.10Android12🚀返回专栏总目录 文章目录 一、Thermal介绍二、相关代码路径三、用户态接口说明四、常见问题4.1 关温控4.2 获取当前温度沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍Thermal的相关内容及调试手段。 一…

环境配置之终端WezTerm

前言 其实是在复习的过程中发现终端非常别扭,了解了一些大佬的使用方式后,尝试使用一个多平台的终端应用。 环境配置 之前在MAC上使用过的终端包括ZenTermLite和Item2,这次使用一个跨平台的终端WezTerm! 缺点就是自定义的地方太…

JUC并发编程第七篇,volatile凭什么可以保证可见性和有序性?我们该如何正确使用它?

JUC并发编程第七篇,volatile凭什么可以保证可见性和有序性?我们该如何正确使用它?一、volatile的作用是什么?二、什么是内存屏障?三、四大内存屏障指令源码解析!四、volatile如何通过内存屏障保证可见性和有…

Spring MVC数据绑定和表单标签的应用(附带实例)

为了让读者进一步学习数据绑定和表单标签,本节给出了一个应用范例 springMVCDemo04。该应用中实现了 User 类属性和 JSP 页面中表单参数的绑定,同时在 JSP 页面中分别展示了 input、textarea、checkbox、checkboxs、select 等标签。 应用的相关配置 在…

解析csv文件,读取百万级数据

最近在处理下载支付宝账单的需求,支付宝都有代码示例,功能完成还是比较简单的,唯一的问题就在于下载后的文件数据读取。账单文件可大可小,要保证其可用以及性能就不能简单粗暴的完成开发就行。 文件下载是是csv格式,此…

干货|成为优秀软件测试工程师的六大必备能力

“软件吞噬世界”、“软件定义一切”。随着软件行业的迅速发展,保障软件质量的关键环节——软件测试也变得越来越重要。而执行测试工作的测试工程师,便是软件质量的把关者。 测试工程师早在2005年就被劳动和社会保障部门列入第四批新职业中。经过短短几…

文件批量从gbk转成utf8的工具

工具名:GB/BIG5/UTF-8 文件编码批量转换程序 下载地址: https://www.wenjiangs.com/wp-content/uploads/2018/05/GB2UTF8.zip 程序功能:将 GB、BIG5、UTF-8 文件相互转换,方便的批量处理能力,主要用于网站文件编码方式…

单商户商城系统功能拆解41—应用中心—用户储值

单商户商城系统,也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法,例如拼团,秒杀,砍价,包邮…

R语言进行相关矩阵分析及其网络可视化

数据准备 # 选择感兴趣的列 mydata <- mtcars %>% select(mpg, disp, hp, drat, wt, qsec) # 添加一些缺失值 mydata$hp[3] <- NA # 检查数据 head(mydata, 3) ## mpg disp hp drat wt qsec ## Mazda RX4 21.0 160 110 3.90 2.62 16.5 ## Ma…

基于WiFi小车控制板的单片机小系统原理图

小系统&#xff0c;指的是的用少的元件组成的单片机可以工作的系统。一般在设计小系统的时候分为这四种必要的电路&#xff0c;分别是1、电源供电电路;2、单片机复位电路;3、时钟振荡电路;4、程序的下载接口电路。这次基于我们研发的WiFi小车51核心控制板的小系统原理图来讲一下…

uni-app实现支付及项目打包上传

本文主要介绍uni-app项目中如何实现支付功能&#xff08;支付宝支付、微信支付&#xff09;&#xff0c;及项目如何打包上传。 一、实现支付 前置工作&#xff0c;项目要实现支付功能&#xff0c;首先要在根目录manifest.json文件内App模块配置中进行设置。 其中&#xff0c;a…

机构运动学分析

背景介绍 空间机构具有结构紧凑、运动灵活等特点&#xff0c;在航空航天、精密仪器以及工业设备等领域具有广泛的应用。调研发现&#xff0c;机械臂一般采用伺服电机作为动力源&#xff0c;通过空间连杆驱动末端执行器&#xff0c;大大的减轻了工人的劳动强度。本节中主要是针对…

iconfont小图标从下载到引入到vue项目中的详细教程

地址&#xff1a;iconfont-阿里巴巴矢量图标库 iconfont小图标下载&#xff1a; &#xff08;1&#xff09;查找图标 在搜索框直接文字搜索或者看下面的小图标库&#xff0c;找想要的&#xff0c;每个小图标库都有一个名字&#xff0c;比如&#xff1a;“阿里云官网”&#x…

Vue2中$set的使用

一、什么场景下使用$set set为解决Vue2中双向数据绑定失效而生&#xff0c;只需要关注什么时候双向数据绑定会失效就可以了。 例如&#xff1a; 1.利用数组中某个项的索引直接修改该项的时候 arr[indexOfItem] newValue 2.直接修改数组的长度的时候 arr.length newLength …

gRPC学习笔记(一)

文章目录gRPC初学思维导图异步多函数多类的调用grpc初学总结&#xff1a;杂项gRPC初学思维导图 异步多函数多类的调用 一个类里有多个方法时&#xff0c; 两种方法&#xff1a; 定义不同的类&#xff08;推荐&#xff0c;只管自己的实现&#xff0c;换了请求类型&#xff0c;…