平滑处理 - cvSmooth() 函数实现
前言
平滑是图像处理中很重要的操作,其主要用途是降噪。Open CV 提供了 5 种不同的平滑方法:简单模糊,简单无缩放变换的模糊,中值模糊,高斯模糊和双边滤波,它们都通过函数 cvSmooth 实现。
关于几种平滑的具体实现步骤及相关基础知识,本文不做讲解( 网上很多相关资料 ),仅就调用封装好了的平滑函数进行介绍,且仅具体介绍简单平滑处理,其它的平滑方式类似。
平滑函数 cvSmooth()
函数原型:
void cvSmooth (
const CvArr *src,
CvArr * dst,
int smoothtype = CV_GAUSSIAN,
int param1 = ,
int param2 = ,
int param3 = ,
int param4 =
);
下面结合几种具体的平滑操作进行演示,不论何种平滑,第一个参数都是目标处理图像,第二个参数是处理后的图像,不同的平滑方法后面的几个参数的设定规则不同。
简单模糊
smoothtype 类型设定为 CV_BLUR,param1 和 param2 为均值求解领域的范围( 核 )大小,后两个参数用不上。下面的程序对图像实现核为 3x3 的均值平滑:
// 此头文件包含图像IO函数的声明
#include "highgui.h"
// 此头文件包含基本的图像处理函数和高级计算机视觉算法
#include "cv.h" int main (void) { // 将D盘目录下名为" 1.jpg "的图像加载至内存并获得一个指向该图像内存块的指针img
IplImage * img = cvLoadImage ("D:\\1.jpg"); // 创建一个窗口显示平滑处理前的图像
cvNamedWindow ("平滑前", CV_WINDOW_AUTOSIZE); // 将图像装载进窗口并显示此窗口
cvShowImage ("平滑前", img); // 创建一个新的图像内存块,以存放平滑结果。
IplImage * out = cvCreateImage (
cvGetSize (img),
img->depth,
img->nChannels
); // 平滑处理函数。
cvSmooth (
img, // 待处理图像
out, // 处理后图像
CV_GAUSSIAN, // 平滑类型
, // 核大小( 行 )
// 核大小( 列 )
); // 创建一个窗口显示平滑处理后的图像
cvNamedWindow ("平滑后", CV_WINDOW_AUTOSIZE); // 将图像装载进窗口并显示此窗口
cvShowImage ("平滑后", out); // 该函数的参数为 0 时,程序将等待用户触发一个按键操作。
// 若参数为正整数,则程序将暂停该整数个毫秒单位直至用户有任何按键。
cvWaitKey (); // 释放图像内存块
cvReleaseImage (&img);
cvReleaseImage (&out); // 关闭窗口同时释放窗口内存块
cvDestroyWindow ("平滑前");
cvDestroyWindow ("平滑后"); return ;
}
运行程序:


其它模糊
当 cvSmooth 的 smoothtype 字段为其它值时,将进行不同类型的平滑处理,而 param1-4 则根据模糊方式的不同赋予不同实参。具体调用规范请参阅相关资料。
说明
平滑对目标处理图像,结果图像的格式以及是否支持 in place 等都有相关规定,具体使用时请参阅函数手册。
平滑处理 - cvSmooth() 函数实现的更多相关文章
- OpenCV学习 5:关于平滑滤波器 cvSmooth()函数
原创文章,欢迎转载,转载请注明出处 本节主要了解下cvSmooth函数的一些参数对结果的影响.从opencv tutorial中可以看到这样一段话: 像我这样的数学渣,还是看下图来得形象: 高斯滤波器 ...
- cvSmooth函数 和 OpenCV自带的人脸检测
记录cvSmooth函数的用法和 OpenCV自带的人脸检测. (1)cvSmooth函数 void cvSmooth( const CvArr* src, CvArr* dst,int smooth ...
- 平滑处理Smooth之图像预处理算法-OpenCV应用学习笔记三
大清早的我们就来做一个简单有趣的图像处理算法实现,作为对图像处理算法学习的开端吧.之所以有趣就在于笔者把算法处理的各个方式的处理效果拿出来做了对比,给你看到原图和各种处理后的图像你是否能够知道那幅图对 ...
- 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版
<zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...
- Unity3D Mathf函数
Mathf.Abs绝对值 计算并返回指定参数 f 绝对值. Mathf.Acos反余弦 static function Acos (f : float) : float 以弧度为单位计算并返回参数 f ...
- 日常之学习CSS3变形和js函数指针
1,transform变形属性,包括rotate(xxdeg)旋转,translate(x轴px,y轴px)移动,scale(0.5,2)变形(x轴缩小0.5倍,y轴放大2倍),skew(x轴deg, ...
- OpenCV平滑处理示例代码
#include<cv.h> #include<highgui.h> int main(int argc, char** argv) { IplImage* img = cvL ...
- Unity3D中Mathf数学运算函数总结
引入: 看到一个案例注意到函数Mathf.SmoothDamp的使用,游戏中用于做相机的缓冲跟踪和boss直升机跟踪士兵.该函数是Unity3D中Mathf数学运算函数中的一个.一些游戏使用了smoo ...
- opencv车道线检测
opencv车道线检测 完成的功能 图像裁剪:通过设定图像ROI区域,拷贝图像获得裁剪图像 反透视变换:用的是老师给的视频,没有对应的变换矩阵.所以建立二维坐标,通过四点映射的方法计算矩阵,进行反透视 ...
随机推荐
- AtCoder Regular Contest 075 C D E (暂时)
C - Bugged 题意 给\(n\)个数,找其中的一个子集,使得其和最大,且不是\(10\)的整数倍. 思路 先对\(n\)个数求和, 如果本身即不被\(10\)整除,则即为答案. 否则,如果本身 ...
- Python 文本(txt) 转换成 EXCEL(xls)
#!/bin/env python # -*- encoding: utf-8 -*- #------------------------------------------------------- ...
- C#图解教程学习笔记——类相关的概念
一.一些基本概念1. 字段:隶属于类的变量,即类的成员变量.2. 方法:隶属于类的函数,即类的成员函数.3. 实例成员:类的每个实例拥有自己的各个类成员的副本,这些成员称为实例成员. 改变一个实例字段 ...
- github 获取repo 发布的版本号
获取最新版本 https://api.github.com/repos/nickchou/paopao/releases/latest 获取版本列表 https://api.github.com/re ...
- hdu 3986(最短路变形好题)
Harry Potter and the Final Battle Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65536/6553 ...
- 四、Ubuntu 一些常用命令
1.锁定root用户 :sudo passwd -l root 2.解锁root用户 :sudo passwd -u root 3.切换身份:su root 或者 su 其他用户名,然后输入密码, ...
- Docker 存储引擎
可插拔存储引擎架构 这种可插拔式的存储架构.可以让你很灵活的去选择适合自己环境的存储引擎. 每个存储引擎都是以Linux 文件系统为基础的.此外,每个存储引擎都以自己的方式自由的管理image ...
- Resolving the Provisioning Profile Invalid Status
Q: What causes the provisioning profile "Invalid" status? How do I resolve it, and how do ...
- oracle如何获得新插入记录的id
.对于提交(最后一次操作commit了)的话可以查询那个提交段 SELECT 列名1,列名2…… FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAX ...
- SQLServer-----SQLServer 2008 R2安装