OpenCV-将图像作平滑处理并显示

来源:互联网 发布:淘宝自然流量没有了 编辑:程序博客网 时间:2024/06/01 08:05

1:代码如下:

#include "stdafx.h"#include "highgui.h"#include "cv.h"void example2_4(IplImage* image){   cvNamedWindow("Example4-in");//创建窗口显示输入   cvNamedWindow("Example4-out");//创建窗口显示输出   cvShowImage("Example4-in",image);   //创建首地址并分配存储空间IplImage* cvCreateImage( CvSize size, int depth, int channels );   //size 图像宽、高   //depth 图像元素的位深度,IPL_DEPTH_8U - 无符号8位整型   //channels 每个元素(像素)通道数.可以是 1, 2, 3 或 4   //得到二维的数组的尺寸,以CvSize返回.   //CvSize,OpenCV的基本数据类型之一。表示矩阵框大小,以像素为精度。与CvPoint结构类似   IplImage* out=cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3);   //函数 cvSmooth 可使用简单模糊、简单无缩放变换的模糊、中值模糊、高斯模糊、双边滤波的任何一种方法平滑图像   //cvSmooth(输入图像,输出图像,平滑方法,平滑操作的第一个参数(此时表示模糊的程度且必须设置为奇数),平滑操作的第二个参数)   cvSmooth(image,out,CV_GAUSSIAN,15,3);   cvShowImage("Example4-out",out);   cvReleaseImage(&out);   cvWaitKey(0);   cvDestroyWindow("Example4-in");   cvDestroyWindow("Example4-out");}int main(int argc, char* argv[]){    IplImage* img=cvLoadImage("C:\\horse.jpg");    example2_4(img);    return 0;}
运行结果:


2:cvSmooth的解释

/*void cvSmooth(const CvArr* src,                    CvArr* dst,                    int smoothtype=CV_GAUSSIAN,                    int param1=3,                    int param2=0,                    double param3=0,                    double param4=0);    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 的中值滤波(i.e. 邻域是方的)。                CV_BILATERAL:(双向滤波)应用核大小为param1×param1的滤波,彩色sigma=param3,空间sigma=param4。*/



原创粉丝点击