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

直接上代码,函数简介都在代码注释中

//canny边缘检测
-(void)bianyuanjianceImage{
//图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘。
UIImage *img1 = [UIImage imageNamed:@""];
IplImage *pimage = [self convertToIplImage:img1];
CvSize cvsize;
cvsize.width = pimage->width;
cvsize.height = pimage->height; //转换为灰度,这里使用Opencv里的颜色空间转换函数cvCvtColor,可以实现RGB颜色向HSV,HSI等颜色空间的转换,也可以转换为灰度图像。
IplImage *huiImage = cvCreateImage(cvsize, pimage->depth,);
cvCvtColor(pimage, huiImage, CV_BGR2GRAY); //边缘检测
float threshold = ;
IplImage *huiImage3 = cvCreateImage(cvsize, huiImage->depth, );
//canny边缘检测:cvCanny
/*
void cvCanny( const CvArr* image, CvArr* edges, double threshold1,double threshold2, int aperture_size=3 );
函数说明: 第一个参数表示输入图像,必须为单通道灰度图。 第二个参数表示输出的边缘图像,为单通道黑白图。 第三个参数和第四个参数表示阈值,这二个阈值中当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割即如果一个像素的梯度大与上限值,则被认为是边缘像素,如果小于下限阈值,则被抛弃。如果该点的梯度在两者之间则当这个点与高于上限值的像素点连接时我们才保留,否则删除。 第五个参数表示Sobel 算子大小,默认为3即表示一个3*3的矩阵。Sobel 算子与高斯拉普拉斯算子都是常用的边缘算子,详细的数学原理可以查阅专业书籍。
*/
cvCanny(huiImage, huiImage3, threshold, threshold * , ); //这里多转换了一次,因为UIImage中不能存储纯Gray的图像,将huiImage的内容再转换回IPL_DEPTH_8U色深、3通道图像,虽然下一条语句将原本灰度格式的grayImage转换为BGR格式的grayImagePlus,但那仅仅是格式的转换,灰度图像即使转换成BGR也是没有彩色的,仍然在显示的时候是灰度图像,这么做是为了保证UIImage能够装载而已
IplImage *huiImage33 = cvCreateImage(cvsize, huiImage->depth, );
cvCvtColor(huiImage3, huiImage33, CV_GRAY2BGR); UIImage *img2 = [self convertToUIImage:huiImage33];
self.imgView.image = img2; cvReleaseImage(&pimage);
cvReleaseImage(&huiImage);
cvReleaseImage(&huiImage3);
cvReleaseImage(&huiImage33);
}

openCV(四)---Canny边缘检测的更多相关文章

  1. OpenCV图像Canny边缘检测

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

  2. Opencv笔记(十四)——边缘检测算法canny

    简介 Canny 边缘检测算法 是 John F. Canny 于 1986年开发出来的一个多级边缘检测算法,也被很多人认为是边缘检测的 最优算法,它是由很多步构成的算法. 最优边缘检测的三个主要评价 ...

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

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

  4. 基于opencv下对视频的灰度变换,高斯滤波,canny边缘检测处理,同窗体显示并保存

    如题:使用opencv打开摄像头或视频文件,实时显示原始视频,将视频每一帧依次做灰度转换.高斯滤波.canny边缘检测处理(原始视频和这3个中间步骤处理结果分别在一个窗口显示),最后将边缘检测结果保存 ...

  5. OpenCV学习笔记(11)——Canny边缘检测

    了解Canny边缘检测的概念 1.原理 Canny边缘检测是一种非常流行的边缘检测算法,是 John F.Canny在1986年提出的.它是一个有很多步构成的算法 1)噪声去除 使用5*5的高斯滤波器 ...

  6. Canny边缘检测算法(基于OpenCV的Java实现)

    目录 Canny边缘检测算法(基于OpenCV的Java实现) 绪论 Canny边缘检测算法的发展历史 Canny边缘检测算法的处理流程 用高斯滤波器平滑图像 彩色RGB图像转换为灰度图像 一维,二维 ...

  7. Python+OpenCV图像处理(十三)—— Canny边缘检测

    简介: 1.Canny边缘检测算子是John F. Canny于 1986 年开发出来的一个多级边缘检测算法. 2.Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是: 好的检测- ...

  8. OpenCV——边缘检测入门、Canny边缘检测

    边缘检测的一般步骤: 最优边缘检测的三个评价标准: 低错误率:表示出尽可能多的实际边缘,同时尽可能地减少噪声产生的误报: 高定位性:标识出的边缘要与图像实际边缘尽可能接近: 最小响应:图像中的边缘只能 ...

  9. OpenCV学习代码记录——canny边缘检测

    很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...

随机推荐

  1. express学习点滴- methodOverride

    app.use(express.methodOverride());在app.js中可以看到这个中间件,去翻文档,几乎没有提到.一番寻找,整理如下. 作用是使用REST风格的http请求时,进行改写后 ...

  2. w3c School

    w3c School : http://www.w3school.com.cn/h.asp

  3. POJ 2305 Basic remains(进制转换)

    题目链接:http://poj.org/problem?id=2305 ime Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5326 ...

  4. 2016年团体程序设计天梯赛-决赛 L1-3. 出租(20)

    下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破.其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对 ...

  5. Ctrl+Alt+T恢复启动Ubuntu默认终端

    对于Ubuntu14.04,如果安装了terminator,那么快捷键Ctrl+Alt+T将不会启动自带的terminal,而是启动安装的terminator,如果想恢复回来,可以执行以下命令: su ...

  6. 清除js-css缓存,清除app缓存,清除php缓存

    入口文件,定义版本常量 define('VERSION','version=002');//自定义版本号 html文件引用常量 <script src="/js/detail.js?& ...

  7. 自定义MVC框架(二) -基于XML文件

    1.oracle的脚本 create table STUDENT ( sid NUMBER primary key, sname ), age NUMBER, pwd ) ) create seque ...

  8. Python之深浅拷贝&函数

    一.深浅拷贝 深浅拷贝是指copy模块下的copy()和deepcopy()方法. 1.浅拷贝 示例: >>> import copy >>> a = 'hello ...

  9. zookeeper(1)

    参考文档:zookeeper中文网 一.介绍安装 zookeeper 是一个高效的分布式协调服务,它暴露了一些公用服务,比如命名/配置/同步控制/群组服务等.我们可以使用ZK来实现一些功能,例如:达成 ...

  10. Vultr VPS测试IP $5/月KVM-512MB/15G SSD/1T

    vultr主要卖点是:SSD硬盘.超低价格.全球13个机房.10Gb服务器带宽.3GHz CPU.性能优异.vultr vps详细评测可参考这篇文章. 以下是vutlr vps官方提供的测试IP地址: ...