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

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。*/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值