八.使用OpenCv图像平滑操作

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;
}

效果图:

         

模糊后:

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

时间: 2024-10-29 14:59:27

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

八.使用OpenCv对图像进行平滑操作

1.cvSmooth函数 函数 cvSmooth 可使用简单模糊.简单无缩放变换的模糊.中值模糊.高斯模糊.双边滤波的任何一种方法平滑图像.每一种方法都有自己的特点以及局限. 没有缩放的图像平滑仅支持单通道图像,并且支持8位到16位的转换(与cvSoble和cvaplace相似)和32位浮点数到32位浮点数的变换格式. 简单模糊和高斯模糊支持 1- 或 3-通道, 8-比特 和 32-比特 浮点图像.这两种方法可以(in-place)方式处理图像. 中值和双向滤波工作于 1- 或 3-通道, 8

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

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本号: 2.4.9 本篇文章中.我们一起探讨了OpenCV

【OpenCV入门教程之十八】OpenCV仿射变换 & SURF特征点描述合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们一起探讨了OpenCV中

OpenCV —— 矩阵操作

多通道的矩阵 -- 通道是连续的!! 要将指向该数据类型的指针移动到下一通道,我们只需要将其增加1.如果想访问下一个"像素"或者元素集,则需要一定的偏移量 矩阵的step元素是矩阵中行的长度,单位为字节.   #include "cv.h" #include "highgui.h" #include <IOSTREAM.H> int main(int argc,char** argv) { float vals[]={0.85,-0.

C#软件开发实例.私人订制自己的屏幕截图工具(八)添加键盘操作截图的功能

上一篇:C#软件开发实例.私人订制自己的屏幕截图工具(七)添加放大镜的功能 虽然添加了放大镜的功能,但是在进行像素级的定位时,还是不容易精确定位,在用鼠标操作时要改变一两个像素的位置还是有些困难的. 处理键盘按下事件 /// <summary> /// 处理键盘按下事件 /// 用于实现以下功能: /// 当用户按下Esc键时,退出截图过程: /// Shift + Enter 开始截图的功能: /// 使用键盘的上下左右键调整截图位置的功能: /// Shift + 上下左右键调整截图区域大

RxJava 学习笔记(八) --- Combining 结合操作

@(Rxjava学习笔记) RxJava 学习笔记(八) - Combining 结合操作 RxJava 学习笔记八 Combining 结合操作 StartWith 在数据序列的开头插入一条指定的项 Merge 将多个Observable合并为一个 MergeDelayError 将多个Observable合并为一个 Zip 使用一个函数组合多个Observable发射的数据集合然后再发射这个结果 CombineLatest 当两个Observables中的任何一个发射了一个数据时通过一个指定

OpenCV图像平滑处理

图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函数如下: blur GaussianBlur medianBlur bilateralFilter 原理 Note 以下原理来源于Richard Szeliski 的著作 Computer Vision: Algorithms and Applications 以及 Learning OpenCV 平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法. 平滑处理的用途有很多, 但是在本教程中我们仅仅关

OpenCV读写操作

OpenCV读取一副图片 imread( const String& filename, int flags = IMREAD_COLOR ); 参数1.文件名(路径与文件名,如果文件在目录中可以直接使用文件名即可) 参数2.读取方式 flags > 0  返回一个3通道的彩色图像 flags = 0  返回一个灰度图像 flags < 0  返回包含Alpha通道的加载图像 OpenCV写入一副图片 //如果目标文件夹内有同名文件则不执行任何操作, 包括下方的任何操作 imwrite

OPENCV形态学操作1

形态学操作是指基于形状的一系列图像处理操作,包括膨胀,腐蚀,二值化,开运算,闭运算,顶帽算法,黑帽算法,形态学梯度等,最基本的形态学操作就是膨胀和腐蚀. 一.膨胀 首先需要明确一个概念,膨胀和腐蚀都是针对于图像中较亮的区域而言的,膨胀就是亮的区域变多了,而腐蚀就是暗的区域变多了. 膨胀的功能主要有消除噪声,分割出独立的图像元素,在图像操作的时候,有时候需要对图像中的某些形状进行检测,而这些形状相互连接在一起,不好分开检测,膨胀就能切开这些形状(很小的连接位置),或者图像中有很小块的黑斑,或许是相