Canny边缘检测算法以Canny的名字命名,其中Canny的目标是找到一个最优的边缘检测算法,其有三种衡量标准:

  1. 低错误率:标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报
  2. 高定位性:标识出的边缘要与图像中的图像中的实际边缘尽可能接近
  3. 最小响应:图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘
//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边缘检测的更多相关文章

  1. Canny边缘检测

    1.Canny边缘检测基本原理      (1)图象边缘检测必须满足两个条件:一能有效地抑制噪声:二必须尽量精确确定边缘的位置.      (2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子.这 ...

  2. OpenCV图像Canny边缘检测

    Canny边缘检测 图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘函数原型:     void cvCanny(       ...

  3. OpenCV: Canny边缘检测算法原理及其VC实现详解(转载)

    原文地址:http://blog.csdn.net/likezhaobin/article/details/6892176 原文地址:http://blog.csdn.net/likezhaobin/ ...

  4. 从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中

    //从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中 //作者:sandy //时间:2015-10-10 #inclu ...

  5. [转载+原创]Emgu CV on C# (六) —— Emgu CV on Canny边缘检测

    Canny边缘检测也是一种边缘检测方法,本文介绍了Canny边缘检测的函数及其使用方法,并利用emgucv方法将轮廓检测解算的结果与原文进行比较. 图像的边缘检测的原理是检测出图像中所有灰度值变化较大 ...

  6. ###Canny边缘检测算子

    开源中国. #@date: 2014-06-20 #@author: gerui #@email: forgerui@gmail.com 一.一阶微分边缘算子 1. 一阶微分边缘检测算子也称梯度边缘算 ...

  7. openCV(四)---Canny边缘检测

    图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘. 直接上代码,函数简介都在代码注释中 //canny边缘检测 -(void) ...

  8. Canny边缘检测算法的实现

    图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.由于数字图像的离散信号, ...

  9. 一些关于Canny边缘检测算法的改进

    传统的Canny边缘检测算法是一种有效而又相对简单的算法,可以得到很好的结果(可以参考上一篇Canny边缘检测算法的实现).但是Canny算法本身也有一些缺陷,可以有改进的地方. 1. Canny边缘 ...

随机推荐

  1. Premiere Pro 中的键盘快捷键

    官网地址:https://helpx.adobe.com/cn/premiere-pro/using/default-keyboard-shortcuts-cc.html?mv=product& ...

  2. 使用Bootstrap Bar来增加Onboarding Progress Bar功能。

    git初始代码https://github.com/chentianwei411/at-mentions-with-action-text 首先,开分支onboardingbar. 然后, rails ...

  3. ZJOI2019Day2AFO记

    题目读下来感觉,,,怎么看上去模型都这么简单全是套路题的样子.先想了下T3应该会50,是个计算几何,50够了..于是先写了40(10分等下再来写)这样就花掉了一个小时.....过去看T1,直接高斯消元 ...

  4. OSGI框架

    面向Java的动态模型系统 OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功能.为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方. ...

  5. js的call和apply区别

    call和apply都是改变了this的指针. obj.call(newObj, arg1, arg2, ...); obj.apply(newObj, [arg1, arg2, ...]); 上面的 ...

  6. 微信小程序开发和h5的区别

    1. 开发小程序时,每个页面一定要在app.json文件中注册,页面文件夹和其包含的四个文件的名字要保持一致. 2. 小程序发起的都是HTTPS网络请求,在开发调试的过程中可以不校验协议和TLS版本, ...

  7. nigix反向代理

    参考: https://www.cnblogs.com/yycc/p/8185748.html

  8. 思科模拟器PacketTracer7--利用一台交换机和2台pc互连构成小型局域网

    实验二—2 实验工具:思科模拟器PacketTracer7(可在思科官网下载,免费) 实验设备: 交换机一台,PC两台,直连线或选择自动匹配 实验步骤: 一.配置网络拓扑图 连线可选择连通线或闪电符号 ...

  9. AOP之配置文件实现

    看了http://www.cnblogs.com/xrq730/p/4919025.html这篇文章之后自己跟着做了一遍,有需要可以去看原文,比我写的更详细. AOP AOP(Aspect Orien ...

  10. ThinkPHP5.0源码学习之缓存Cache(一)

    一.文件 1.缓存配置文件:thinkphp\convention.php 2.缓存文件:thinkphp\library\think\Cache.php 3.驱动目录:thinkphp\librar ...