OpenCV入门:简单图像处理实例——平滑滤波

本文简单举一个图像平滑滤波的例子,以此认识OpenCV为我们提供的强大图像处理功能。代码如下:

//
//  main.cpp
//  Smooth_Filter
//
//  Created by 黄露 on 16/3/21.
//  Copyright © 2016年 huanglu_thu13. All rights reserved.
//

#include "cv.h"
#include "highgui.h"

int main(int argc, const char * argv[]) {
    //创建两个窗口显示处理前后的图片
    cvNamedWindow("Imgae Before Processing");
    cvNamedWindow("Image After Processing");
    //创建图像指针,加载图像至内存
    IplImage * in = cvLoadImage("/Users/huanglu/Pictures/thusada.jpg",1);
    //创建一个图像来存储处理后的图片
    IplImage * out = cvCreateImage(cvGetSize(in), IPL_DEPTH_8U, 3);
    //做平滑滤波,用3×3的模板
    cvSmooth(in, out, CV_GAUSSIAN, 3, 3);
    //显示处理前后的图片
    cvShowImage("Imgae Before Processing", in);
    cvShowImage("Imgae After Processing", out);
    //释放图像指针
    cvReleaseImage(&in);
    cvReleaseImage(&out);
    //等待用户输入任意键结束
    cvWaitKey();
    //释放两个窗口
    cvDestroyWindow("Imgae Before Processing");
    cvDestroyWindow("Imgae After Processing");
    return 0;
}
代码中前面一部分已经没什么需要解释的,主要需要解释以下2个函数。

1、cvCreateImage用来创建首地址并分配存储空间,其原型为:

IplImage* cvCreateImage( CvSize size, int depth, int channels );
三个参数依次是图像大小、图像元素的位深度和图像的通道数。这里我们使用cvGetSize获取图像大小,IPL_DEPTH_8U 表示无符号8位整型,即uint8,本次图像为彩色三通道。

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。

以下是测试的结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值