OpenCv:边缘处理&Canny边缘检测
卷积边缘:
一、在进行卷积的时候,对于原图像(1,1)的位置,左、上方没有足够的像素做卷积。
二、通常,在卷积之前,在原图增加边缘像素,比如(3*3的,增加一个像素)
三、增加像素值得处理方法,通常有:
(一)BORDER_DEFAULT。默认
(二)BORDER_CONSTANT。使用固定的值。
(三)BORDER_REPLICATE。使用已知边缘的像素值。
(四)BORDER_WRAP。用另一边的像素值来补偿填充。
四、API
copyMakeBorder(
Mat src,
Mat dst,
int top,//边缘宽度,一般上下左右都一样
int bottom,
int left,
int right,
int borderType,//类型
Scalar value //颜色限制
)
五、例子
原图

BORDER_DEFAULT

BORDER_REPLICATE

BORDER_WRAP

Canny边缘检测
一、算法介绍
(一)高斯模糊——GaussianBlur。就是对图像进行降噪。
(二)灰度转换——cvtColor。
(三)计算梯度——Sobel/Scharr。得到 |X| + |Y|。
(四)非最大信号抑制。由于Sobel后,边沿非常强(粗),甚至起“皱褶”。因此要处理。
(五)高低阈值输出二值图像。
二、详细介绍
(一)梯度。Sobel

Gx:将kernel内,水平方向的所有变化量,全部集中在【锚点】处,而且【锚点】同行,还*2,突出其权重。
G如果大于某个阈值,那么此位置就可能是边缘了。
G通常用G = |Gx| +|Gy|
(二)非最大信号抑制。
1、梯度方向。在哪个方向变化最大。


θ在0~180度之间
2、抑制。
(1)找到θ
(2)比如θ=90度,找到90±45度的像素(左上、右上)
(3)如果像素值,大于左上、右上,那么保留。否则舍弃。
(三)高低阈值输出二值图像。
1、定义2个阈值:高值T1、低值T2。
2、大于T1,保留;小于T2,丢弃。
3、从高于T1的像素开始寻找,大于T2且相互链接的,都保留。
4、推荐T1:T2 = 3:1,或者2:1。
三、API介绍
Canny(
Mat src, //8-bit(位)的灰度图
Mat dst,
double T2, //低阈值,此值越高,得到的边缘越少,最终只留最强的边缘
double T1, //高阈值,通常为255
int aptertureSize,//Soble算子的Size,通常3*3的,所以这里填3
bool L2gradient //true表示是L2来归一化,否则用L1归一化,一般为false
) //L2gradient ,使用L2,则用G = sqrt(gx*gx + gy* gy)来求梯度,否则用
//G = |gx| + |gy|来近似
四、例子
Mat gaussianBlur, gray, canny;
cvtColor(src, gray, COLOR_BGR2GRAY);
Canny(gray, canny, 85, 255, 3);
imshow("canny", canny);
随着低阈值的变化,而变化

OpenCv:边缘处理&Canny边缘检测的更多相关文章
- openCV实例:Canny边缘检测
http://blog.sina.com.cn/s/blog_737adf530100z0jk.html 在第一次使用openCV程序成功对图像进行打开后,现在开始试验第二个例程试验:Canny边缘检 ...
- opencv——自适应阈值Canny边缘检测
前言 Canny边缘检测速度很快,OpenCV中经常会用到Canny边缘检测,以前的Demo中使用Canny边缘检测都是自己手动修改高低阈值参数,最近正好要研究点小东西时,就想能不能做个自适应的阈值, ...
- OpenCV: Canny边缘检测算法原理及其VC实现详解(转载)
原文地址:http://blog.csdn.net/likezhaobin/article/details/6892176 原文地址:http://blog.csdn.net/likezhaobin/ ...
- [转载+原创]Emgu CV on C# (六) —— Emgu CV on Canny边缘检测
Canny边缘检测也是一种边缘检测方法,本文介绍了Canny边缘检测的函数及其使用方法,并利用emgucv方法将轮廓检测解算的结果与原文进行比较. 图像的边缘检测的原理是检测出图像中所有灰度值变化较大 ...
- Canny边缘检测算法原理及其VC实现详解(二)
转自:http://blog.csdn.net/likezhaobin/article/details/6892629 3. Canny算法的实现流程 由于本文主要目的在于学习和实现算法,而对于图像 ...
- openc —— Canny 边缘检测
边缘检测的一般步骤 [第一步]滤波 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能.常见的滤波方法主要有高斯滤波,即采用 ...
- 机器学习进阶-边缘检测-Canny边缘检测 1.cv2.Canny(进行Canny边缘检测)
1. cv2.Canny(src, thresh1, thresh2) 进行canny边缘检测 参数说明: src表示输入的图片, thresh1表示最小阈值,thresh2表示最大阈值,用于进一步删 ...
- OpenCV图像Canny边缘检测
Canny边缘检测 图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘函数原型: void cvCanny( ...
- openCV(四)---Canny边缘检测
图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘. 直接上代码,函数简介都在代码注释中 //canny边缘检测 -(void) ...
- 基于opencv下对视频的灰度变换,高斯滤波,canny边缘检测处理,同窗体显示并保存
如题:使用opencv打开摄像头或视频文件,实时显示原始视频,将视频每一帧依次做灰度转换.高斯滤波.canny边缘检测处理(原始视频和这3个中间步骤处理结果分别在一个窗口显示),最后将边缘检测结果保存 ...
随机推荐
- 浏览器调试工具devtool
视频网址 先打开devtool,再打开命令菜单.可以用screenshot来截屏 $0:先在element点击元素,再在控制台输入$0,这个$0代表element中选中的DOM元素. $1,$2... ...
- tp-link路由器后台_硬解
title: 脚本_tp-link路由器后台_硬解 author: 杨晓东 permalink: 脚本 date: 2021-10-02 11:27:04 categories: - 投篮 tags: ...
- Word12 财务部制作本年年度报告office真题
1.根据题目一的要求,打开素材文件,点击[文件]-[另存为],选择[当前文件夹],命名为Word. 2.根据题目二的要求,在[开始]里点击[样式]的右下角,打开样式窗口,勾选[显示预览],选中文字,鼠 ...
- Spring Security 5 ----默认的filter都有什么用?
我去找参考资料时,大部分只是来自于官网,但是很少分析为什么这么干,所以网络代码只停留于demo,生产级的应用却需要另外思考,不思考会有坑哦.大部分资料,合理不合理先不说,反正通了就行.本文试图去找寻, ...
- nginx 与 k8s ingress 配置转发websocket
环境 10.1.100.10:70 是后端websocket 服务 需要通过nginx 向后端转发,nginx 配置文件如下 # cat test-ue4.conf map $http_upgrade ...
- 论文阅读: CCF A 2022 MVD: 基于流敏感图神经网络的内存相关漏洞检测 (ICSE)
Motivation: 内存相关漏洞会导致性能下降和程序崩溃,严重威胁到现代软件的安全性. 静态分析方法使用一些预定义的漏洞规则或模式来搜索不正确的内存操作,然而,定义良好的漏洞规则或模式高度依赖于专 ...
- 面试不愁,给你一份SpringBoot常用注解
一.注解(annotations)列表 @SpringBootApplication: 包含了@ComponentScan.@Configuration和@EnableAutoConfiguratio ...
- 【SQL SERVER】DATEDIFF() :两个日期的日期差
定义用法 DATEDIFF() 函数返回两个日期之间的日期差. 语法 DATEDIFF(datepart,startdate,enddate) startdate 和 enddate 参数是合法的日期 ...
- CSS实现开门效果
.door{ position: relative; width: 450px; height: 300px; border: 1px solid #000; margin: 100px auto; ...
- 无法识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次
无法识别为 cmdlet.函数.脚本文件或可运行程序的名称.请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次 解决方法: 1.在开始菜单里找到Windows PowerShell.并以管理 ...