Canny边缘检测及图像缩放之图像处理算法-OpenCV应用学习笔记四

在边缘检测算法中Canny颇为经典,我们就来做一下测试,并且顺便实现图像的尺寸放缩。
实现功能:
直接执行程序得到结果如下:将载入图像显示在窗口in内,同时进行图像两次缩小一半操作将结果显示到i1,i2窗口内,Canny边缘提取结果显示在i3。

函数精析:
void cvPyrDown(const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 )
- 使用Gaussian金字塔分解输入图像向下采样
- dst:输出指定尺寸图像,跟原图像同类型
- 首先该函数与内核卷积,然后向下采样删除偶数行列信息
cvCanny(src, dst, double threshold1, double threshold2, int apertureSize=3 )
- 发现输入图像的边缘并且输出边缘图像,仅仅支持单通道8位图像
- 输出图像尺寸和类型与原图像相同
- 阈值1和阈值2中小阈值用来控制边缘连接,大阈值用在突出边缘的初始分割
- 核心步骤:高斯滤波-一阶偏导有限差分计算梯度-双阈值算法检测和连接边缘-高斯平滑
附源代码:
#include "stdafx.h"
#include"cv.h"
#include"highgui.h" /* 定义图像放缩函数doPyrDown(原图像,高斯5*5滤波器) */
IplImage* doPyrDown(IplImage* in,int filter = CV_GAUSSIAN_5x5)
{
IplImage* out = cvCreateImage(cvSize(in->width/,in->height/),in->depth,in->nChannels);
/*使用Gaussian金字塔分解输入图像向下采样*/
/*首先该函数与内核卷积,然后向下采样删除偶数行列信息*/
cvPyrDown(in,out);
return(out);
}; /* 定义边缘检测函数doCanny(原图像,若边缘连接阈值,强边缘分割阈值,索贝尔算子内核尺寸) */
IplImage* doCanny(IplImage* in,double lowThresh,double highThresh,double aperture)
{
if(in->nChannels != )//仅支持单通道图像
return();
IplImage* out = cvCreateImage(cvGetSize(in),IPL_DEPTH_8U,); //找输入图像的边缘并输出图像中标识着这些边缘
cvCanny(in ,out,lowThresh,highThresh,aperture);
return(out);
}; int _tmain(int argc, _TCHAR* argv[])
{
IplImage* in = cvLoadImage("lena.jpg",); //载入原图像
IplImage* img1 = doPyrDown( in, CV_GAUSSIAN_5x5);//图像尺寸缩小一半
IplImage* img2 = doPyrDown(img1,CV_GAUSSIAN_5x5);//继续缩小一半
IplImage* img3 = doCanny(img2,,,);//边缘检测 cvNamedWindow("in");
cvNamedWindow("i1");
cvNamedWindow("i2");
cvNamedWindow("i3"); cvShowImage("in",in);
cvShowImage("i1",img1);
cvShowImage("i2",img2);
cvShowImage("i3",img3);
cvWaitKey();
cvDestroyWindow("in");
cvDestroyWindow("i1");
cvDestroyWindow("i2");
cvDestroyWindow("i3");
return ;
}
Canny边缘检测及图像缩放之图像处理算法-OpenCV应用学习笔记四的更多相关文章
- 平滑处理Smooth之图像预处理算法-OpenCV应用学习笔记三
大清早的我们就来做一个简单有趣的图像处理算法实现,作为对图像处理算法学习的开端吧.之所以有趣就在于笔者把算法处理的各个方式的处理效果拿出来做了对比,给你看到原图和各种处理后的图像你是否能够知道那幅图对 ...
- 牛客网《BAT面试算法精品课》学习笔记
目录 牛客网<BAT面试算法精品课>学习笔记 牛客网<BAT面试算法精品课>笔记一:排序 牛客网<BAT面试算法精品课>笔记二:字符串 牛客网<BAT面试算法 ...
- 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)
注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题&&学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 9894 Solved: 4561[Subm ...
- 【数据结构与算法Python版学习笔记】引言
学习来源 北京大学-数据结构与算法Python版 目标 了解计算机科学.程序设计和问题解决的基本概念 计算机科学是对问题本身.问题的解决.以及问题求解过程中得出的解决方案的研究.面对一 个特定问题,计 ...
- CNN目标检测系列算法发展脉络——学习笔记(一):AlexNet
在咨询了老师的建议后,最近开始着手深入的学习一下目标检测算法,结合这两天所查到的资料和个人的理解,准备大致将CNN目标检测的发展脉络理一理(暂时只讲CNN系列部分,YOLO和SSD,后面会抽空整理). ...
- 数据结构与算法C++描述学习笔记1、辗转相除——欧几里得算法
前面学了一个星期的C++,以前阅读C++代码有些困难,现在好一些了.做了一些NOI的题目,这也是一个长期的目标中的一环.做到动态规划的相关题目时发现很多问题思考不通透,所以开始系统学习.学习的第一本是 ...
- 视频文件写入转换之图像处理-OpenCV应用学习笔记五
在<笔记二>中我们做了视频播放和控制的实现,仅仅算是完成了对视频文件的读取操作:今天我们来一起练习下对视频文件的写入操作:格式转换. 实现功能: 打开一个视频文件play.avi,读取文件 ...
- NLTK学习笔记(四):自然语言处理的一些算法研究
自然语言处理中算法设计有两大部分:分而治之 和 转化 思想.一个是将大问题简化为小问题,另一个是将问题抽象化,向向已知转化.前者的例子:归并排序:后者的例子:判断相邻元素是否相同(与排序). 这次总结 ...
随机推荐
- 转:union和union all的区别
Union因为要进行重复值扫描,所以效率低.如果合并没有刻意要删除重复行,那么就使用Union All 两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致): 如果我们需要将两个 ...
- easyui 下拉树改造
<select id="cc" style="width: 250px"></select> <div id="sp&q ...
- NSArray转json字符串
func arrayToJson(arr:NSArray) -> String { let jsonData: NSData = try! NSJSONSerialization.dataWit ...
- List<Map<String,Object>>使用Java代码遍历
List<Map<String,Object>>的结果集怎么使用Java代码遍历以获取String,Object的值: package excel; import java.u ...
- css之absolute绝对定位(绝对定位特性)
学习了绝对定位以后,对此进行一个总结,啦啦啦啦~ 绝对定位特性 1.破坏性 破坏了原有的位置,从文档流里脱离出来 2.包裹性 如果下面这种情况,父级元素将不会有高度和宽度,失去原有的大小
- myeclipse的web project中使用dom4j报错java.lang.ClassNotFoundException: org.dom4j.Document
在学习微信公众平台开发的过程中,参考了微信公众平台java开发详解(工程代码+解析)中的xml解析方法,是使用dom4j来解析的. 对于java中解析xml的方法,又参考了java解析xml的几种方式 ...
- softmax分类器+cross entropy损失函数的求导
softmax是logisitic regression在多酚类问题上的推广,\(W=[w_1,w_2,...,w_c]\)为各个类的权重因子,\(b\)为各类的门槛值.不要想象成超平面,否则很难理解 ...
- JAVA多线程 问题 转载
参考:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ http://www.cn ...
- 特殊的ASCII码对应的字符
Special Characters " " " quotation mark u+0022 ISOnum p:before { content:"\0022& ...
- IE6的连接数限制问题
今天解决了一个bug.看似是UI的bug,最后发现IE的设置问题(严格来说,IE6这么做没有问题,因为HTTP协议的规范如此). 先描述一下问题: 有一个页面管理Job,选中一些Job可以Run,每次 ...