18.Canny边缘检测
Canny边缘检测算法以Canny的名字命名,其中Canny的目标是找到一个最优的边缘检测算法,其有三种衡量标准:
- 低错误率:标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报
- 高定位性:标识出的边缘要与图像中的图像中的实际边缘尽可能接近
- 最小响应:图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘
//Canny
int g_nCannySize;
int g_nCannyThresHoldValue;
int g_nSobelValue;
Mat g_srcImage,g_dstImage,g_grayImage,g_edgeImage;
void on_ChangeThresHoldAndCannySize(int,void*)
{
if(g_nSobelValue>2 && g_nSobelValue%2==1)
{
blur(g_grayImage,g_edgeImage,Size(g_nCannySize,g_nCannySize));
Canny(g_edgeImage,g_edgeImage,1,g_nCannyThresHoldValue,3);
g_dstImage=Scalar::all(0);
g_srcImage.copyTo(g_dstImage,g_edgeImage);
imshow("Canny图",g_dstImage);
}
}
void Test_Canny()
{
g_srcImage=imread("D:\\OpenCV Projects\\OpenCV_Test_Image\\7.jpg");
g_dstImage.create(g_srcImage.size(),g_srcImage.type());
cvtColor(g_srcImage,g_grayImage,COLOR_BGR2GRAY);//得到灰度图
namedWindow("原图");
namedWindow("Canny图");
g_nCannySize=1;
g_nCannyThresHoldValue=3;
//g_nSobelValue=3;
createTrackbar("size","Canny图",&g_nCannySize,30,on_ChangeThresHoldAndCannySize);
//createTrackbar("sobel","Canny图",&g_nSobelValue,9,on_ChangeThresHoldAndCannySize);
createTrackbar("value","Canny图",&g_nCannyThresHoldValue,80,on_ChangeThresHoldAndCannySize);
on_ChangeThresHoldAndCannySize(g_nCannySize,0);
on_ChangeThresHoldAndCannySize(g_nCannyThresHoldValue,0);
//on_ChangeThresHoldAndCannySize(g_nSobelValue,0);
imshow("原图",g_srcImage);
}

18.Canny边缘检测的更多相关文章
- Canny边缘检测
1.Canny边缘检测基本原理 (1)图象边缘检测必须满足两个条件:一能有效地抑制噪声:二必须尽量精确确定边缘的位置. (2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子.这 ...
- OpenCV图像Canny边缘检测
Canny边缘检测 图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘函数原型: void cvCanny( ...
- OpenCV: Canny边缘检测算法原理及其VC实现详解(转载)
原文地址:http://blog.csdn.net/likezhaobin/article/details/6892176 原文地址:http://blog.csdn.net/likezhaobin/ ...
- 从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中
//从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中 //作者:sandy //时间:2015-10-10 #inclu ...
- [转载+原创]Emgu CV on C# (六) —— Emgu CV on Canny边缘检测
Canny边缘检测也是一种边缘检测方法,本文介绍了Canny边缘检测的函数及其使用方法,并利用emgucv方法将轮廓检测解算的结果与原文进行比较. 图像的边缘检测的原理是检测出图像中所有灰度值变化较大 ...
- ###Canny边缘检测算子
开源中国. #@date: 2014-06-20 #@author: gerui #@email: forgerui@gmail.com 一.一阶微分边缘算子 1. 一阶微分边缘检测算子也称梯度边缘算 ...
- openCV(四)---Canny边缘检测
图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘. 直接上代码,函数简介都在代码注释中 //canny边缘检测 -(void) ...
- Canny边缘检测算法的实现
图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.由于数字图像的离散信号, ...
- 一些关于Canny边缘检测算法的改进
传统的Canny边缘检测算法是一种有效而又相对简单的算法,可以得到很好的结果(可以参考上一篇Canny边缘检测算法的实现).但是Canny算法本身也有一些缺陷,可以有改进的地方. 1. Canny边缘 ...
随机推荐
- php安全开发(1)文件包含漏洞
开发过程总结的漏洞: 一,,如何造成包含漏洞:在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶 ...
- 导航栏中各按钮在点击当前按钮变色其他按钮恢复为原有色的实现方法(vue、jq、原生js)
一.vue如何实现? 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- springboot缓存注解——@Cacheable
@Cacheable: 1,方法运行之前,先查询Cache(缓存组件),按照cacheName指定的名字获取(CacheManager获取相应缓存) 第一次获取缓存如果没有Cache组件会自会自动创建 ...
- eclipse运行项目,tomcat报错:Exception in thread :http-bio-8080-exec-4
eclipse运行项目,tomcat报错:Exception in thread :http-bio-8080-exec-4 转自 https://www.cnblogs.com/yby-blogs/ ...
- vue文件上传控件
下载地址:https://pan.baidu.com/s/1Z3pFh2J3xWa8YYnLoseasg 使用方式: <upload ref='upload' action-url='' :mu ...
- python2 和 python3共存,并且分开使用
目录 一.本文使用的python版本安装 二.安装python2 和 Python3 三.修改名称,配置环境,实现共存 1.将C:\Python36中的python.exe修改为python3.exe ...
- 【堆】【洛谷例题】p1090 p1334 p1177
(都是比较简单的典型的而且都是小根堆的例题) p1090 合并果子[传送门] 算法分析:要尽量使用最小的体力合并完所有果子,那么每次合并的两堆果子应该是这所有堆中最小的一个(因为越先合并的堆要被算的次 ...
- html计时发送验证码功能的实现
function countdown() { var time=60; setTime=setInterval(function(){ if(time<=0){ clearInterval(se ...
- css过渡
过渡transition是一个复合属性 例子1 .example{ width: 200px; height: 100px; background-color: blanchedalmond; tra ...
- python 爬虫新解
关于python爬虫多个库的选择反反复复,总是不知道选择哪个,通过试过多个晚上的选择 reques Beautifulsoup 以上两个库足够爬虫,已反爬虫网站数据的爬取.先上代码: 库的调用: 网页 ...