1.cvSmooth函数

函数 cvSmooth 可使用简单模糊、简单无缩放变换的模糊、中值模糊、高斯模糊、双边滤波的不论什么一种方法平滑图像。每一种方法都有自己的特点以及局限。 没有缩放的图像平滑仅支持单通道图像,而且支持8位到16位的转换(与cvSoble和cvaplace相似)和32位浮点数到32位浮点数的变换格式。

简单模糊和高斯模糊支持
1- 或 3-通道, 8-比特 和 32-比特 浮点图像。

这两种方法能够(in-place)方式处理图像。

中值和双向滤波工作于
1- 或 3-通道, 8-位图像,可是不能以 in-place 方式处理图像。

定义原型

void cvSmooth( const CvArr* src, CvArr* dst,int smoothtype=CV_GAUSSIAN,

                                 int param1, int param2, double param3, double param4 );

src:输入图像.

dst:输出图像.

smoothtype平滑方法:

CV_BLUR_NO_SCALE(简单不带尺度变换的模糊) - -对每一个象素的 param1×param2 领域求和。假设邻域大小是变化的,能够事先利用函数 cvIntegral 计算积分图像。

CV_BLUR (simple blur)——对每一个象素param1×param2邻域求和并做尺度变换 1/(param1×param2)。

CV_GAUSSIAN(gaussian blur)——对图像进行核大小为 param1×param2 的高斯卷积。

CV_MEDIAN(median blur)——对图像进行核大小为param1×param1 的中值滤波 (邻域是方的)。

CV_BILATERAL(双向滤波)——应用双向 3x3 滤波,彩色 sigma=param1。空间 sigma=param2.。

2.实例

IplImage* CaptureImg()
{
IplImage* pImg = NULL;
CvCapture* pCam = NULL; pCam = cvCreateCameraCapture(0);
if(NULL == pCam)
{
fprintf(stderr, "Can't init Camera!\n");
return NULL;
} cvSetCaptureProperty(pCam, CV_CAP_PROP_FRAME_WIDTH, 640);
cvSetCaptureProperty(pCam, CV_CAP_PROP_FRAME_HEIGHT,480); pImg = cvQueryFrame(pCam);
if(NULL == pImg)
{
fprintf(stderr, "Can't get one frame\n");
return NULL;
} cvSaveImage("Capture.jpg", pImg, 0); return pImg;
} //图像处理
IplImage* HandleImg(IplImage* pImg)
{
IplImage* pDst = NULL; if(NULL == pImg)
{
printf("The pImg you need handle is NULL!\n");
return NULL;
} pDst = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 3);
//平滑处理
cvSmooth(pImg, pDst, CV_GAUSSIAN, 5, 5, 0, 0);
cvSaveImage("Smooth.jpg", pDst, 0); return pDst;
}

效果图:

         

模糊后:

版权声明:本文博客原创文章,博客,未经同意,不得转载。

八.使用OpenCv图像平滑操作的更多相关文章

  1. 【OpenCV新手教程之十八】OpenCV仿射变换 & SURF特征点描写叙述合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨)  ...

  2. opencv 矩阵操作

    OpenCv矩阵操作 有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等 大多数函数支持ROI,如果图像ROI被设置,那么只处 ...

  3. OpenCV图像平滑处理

    图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函数如下: blur GaussianBlur medianBlur bilateralFilter 原理 No ...

  4. opencv鼠标操作及GUI矩形绘画

    OpenCV的鼠标操作是通过一个中介函数配合回调函数来实现的.指定鼠标操作消息回调函数的函数为SetMouseCallback. void setMouseCallback(const string& ...

  5. OPENCV形态学操作1

    形态学操作是指基于形状的一系列图像处理操作,包括膨胀,腐蚀,二值化,开运算,闭运算,顶帽算法,黑帽算法,形态学梯度等,最基本的形态学操作就是膨胀和腐蚀. 一.膨胀 首先需要明确一个概念,膨胀和腐蚀都是 ...

  6. 基于PI+QT实现OpenCV图像处理操作(基本环境搭建)

    这篇博客就是在PI上直接写出来的!cheers!! PI3的性能已经非常强劲,而作为一个能够独立运行的运算单元,使用它来做图像处理,将是非常适合的.为了挖掘机器的最大潜能,我没有采用比较常见的pyth ...

  7. [OpenCV-Python] OpenCV 核心操作 部分 III

    部分 III核心操作 OpenCV-Python 中文教程(搬运)目录 9 图像的基础操作 目标 • 获取像素值并修改 • 获取图像的属性(信息) • 图像的 ROI() • 图像通道的拆分及合并几乎 ...

  8. opencv 掩膜操作 滤波 卷积核定义 增强对比度 掩膜运算

    /* 矩阵的掩膜操作 0 掩膜mask 在这里进行增强对比度: [ [ 0,-1, 0 ], [-1, 5, -1], [ 0,-1, 0 ] ] 使用mask滑动图片每一个位置,进行卷积运算 这里这 ...

  9. opencv:鼠标操作

    示例程序: #include <opencv.hpp> using namespace cv; #define WINDOW_NAME "程序窗口" // ------ ...

随机推荐

  1. 性能测试之LoadRunner11 破解

    1. 下载破解文件lm70.dll和mlr5lprg.dll     lm70.dll文件,覆盖x:\Program Files\Mercury\LoadRunner\bin下文件即可.     ml ...

  2. 《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS

    矩阵和图像的操作 (1)cvSetIdentity函数 其结构 void cvSetIdentity(//将矩阵行与列相等的元素置为1.其余元素置为0 CvArr* arr//目标矩阵 ); 实例代码 ...

  3. Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO

    距离上次发布(android高仿系列)今日头条 --新闻阅读器 (二) 相关的内容已经半个月了,最近利用空闲时间,把今日头条客户端完善了下.完善的功能一个一个全部实现后,就放整个源码.开发的进度就是按 ...

  4. kernel hexdump分析

    驱动调试中,很多时候是二进制的,这个时候hexdump就是个非常有用的工具了. 不要再自己去实现类似的功能,kernel代码里面就有: 参考: kernel/lib/hexdump.c // 0Xxx ...

  5. nginx的反向代理和负载均衡的区别是什么 - 开源中国社区

    nginx的反向代理和负载均衡的区别是什么 - 开源中国社区   nginx的反向代理和负载均衡的区别是什么 #user  nobody;worker_processes  1;#error_log  ...

  6. POJ 1330 Nearest Common Ancestors(Tarjan离线LCA)

    Description A rooted tree is a well-known data structure in computer science and engineering. An exa ...

  7. Spring MVC集成Tiles使用方法

    首先,我们定义一个总体的tiles视图 /tiles/mainTemplate.jsp首先使用:<tiles:getAsString name="title"/>打印t ...

  8. java中文排序问题(转)

    在Java中,对一个数组或列表(在本文中统称为集合)中的元素排序,是一个很经常的事情.好在Sun公司在Java库中实现了大部分功能.如果集合中的元素实现了Comparable接口,调用以下的静态(st ...

  9. 一个完善的ActiveX Web控件教程

    免费打工仔:一个完善的ActiveX Web控件教程 出自Ogre3D开放资源地带   跳转到: 导航, 搜索 原作者 David Marcionek. 翻译 免费打工仔 这个教程可以帮助你快速开发一 ...

  10. “ASP.default_aspx”并不包括“DropDownList1_SelectedIndexChanged”的定义,其解决方法。

    "ASP.default_aspx"并不包括"DropDownList1_SelectedIndexChanged"的定义,其解决方法. 在使用DropDown ...