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. input[type=file]的美化

    __ 一般的选择框在美化过程中会出现各种问题,样式出错,文字无法更改等... 所有随之而生的便是这样的一种修饰方式:[将type=file的input与另一个按钮通过js绑定,这样便可以通过改变另一个 ...

  2. HDU 6521 Party

    6521 思路: 线段树玄学剪枝, 俗称吉司机线段树. 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize ...

  3. 方差分析 | ANOVA | 原理 | R代码 | 进阶 | one way and two way

    原理 比较两组就用t-test,比较三组及以上就用ANOVA.注意:我们默认说的都是one way ANOVA,也就是对group的分类标准只有一个,比如case和control(ABCD多组),tw ...

  4. linux指令(1)

    1) date: 日期与秒的转换 (seconds since 1970-01-01 00:00:00 UTC) [root@laas:~]# date --date=2019-12-31 +%s15 ...

  5. rsyslog+loganalyzer配置

    1.loganalyzer服务器搭建[root@localhost ~]# getenforce #查看selinux是否关闭[root@localhost ~]# setenforce 0 #临时关 ...

  6. python3读写csv文件

    python读取CSV文件   python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 1. 读文件 csv_ ...

  7. 【转】SQL数据库日志文件收缩

    USE [master] GO ALTER DATABASE MDM_OperationBase SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE ...

  8. REST(Representational state transfer)的四个级别以及HATEOAS介绍

    Rest RES(Representational state transfer):表现层状态转移.其实它省略了主语,「表现层」其实指的是「资源」的「表现层」,所以通俗来讲就是:资源在网络中以某种表现 ...

  9. Win10系列:C#应用控件进阶7

    PathGeometry 前面介绍了Path的使用方法,接下来介绍PathGeometry类.PathGeometry提供了描绘由弧线.曲线和直线组成的多个复杂图形的方法.PathGeometry的核 ...

  10. 本地搭建Apache Tomcat服务器

    首先说下Apache和Tomcat的区别: 相同点:1.两者都是apache组织开发的 2.两者都有HTTP服务的功能 3.两者都是免费的 不同点:Apache是web服务器,专门提供HTTP服务的, ...