八.使用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;
}
效果图:
模糊后:
版权声明:本文博客原创文章,博客,未经同意,不得转载。
八.使用OpenCv图像平滑操作相关推荐
- Python OpenCV像素操作
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 Python OpenCV像素操作 环 ...
- opencv鼠标操作,画矩形
opencv鼠标操作,画矩形 效果图 主要两个函数在作用 //-------------------全局函数声明部分------------------------- //描述:全局函数的声明 //- ...
- OpenCV图像操作的实例(附完整代码)
OpenCV图像操作的实例 OpenCV图像操作的实例 OpenCV图像操作的实例 #include "opencv2/core.hpp" #include "openc ...
- OpenCV图像操作
OpenCV图像操作 OpenCV图像操作 输入输出 图片 图像的基本操作 访问像素强度值 内存管理和引用计数 原始操作 可视化图像 OpenCV图像操作 输入输出 图片 C ++ 从文件加载图像: ...
- Silverlight Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)
Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior) 原文:Silverlight & Blend动画设计系列八: ...
- OpenCV形态学操作
OpenCV形态学操作 本文转载自:http://blog.csdn.net/byxdaz/article/details/5775717 一.图像腐蚀 膨胀 细化的基本原理 1.图像细化的基本原 ...
- RxJava 学习笔记(八) --- Combining 结合操作
@(Rxjava学习笔记) RxJava 学习笔记(八) - Combining 结合操作 RxJava 学习笔记八 Combining 结合操作 StartWith 在数据序列的开头插入一条指定的项 ...
- openCV视频操作(C++版本)
openCV视频操作(C++版本) VideoCapture类详解 opencv的视频操作主要用到 VideoCapture类,有三个构造函数: VideoCapture::VideoCapture( ...
- C++ OpenCV视频操作之图像输出文字
前言 当我们视频分析时可能图像中需要有一个文字说明,OpenCV中本身也有这个API,我们就来看看OpenCV中的图像文字输出. 视频效果 函数API void putText( Mat& i ...
最新文章
- API 网关从入门到放弃
- 利用OpenCV实现图像拼接的代码
- 建立索引要考虑的因素
- 学习对象对神经网络迭代次数的影响
- 用户体验分析: 以 “南通市图书馆微信公众号” 为例
- django-vue-admin前端设置后台接口地址为127.0.0.1产生跨域问题解决办法
- 会场安排问题 http://acm.nyist.net/JudgeOnline/problem.php?pid=14
- android 圆环温度控件,android 圆环倒计时控件
- 在 windows 下使用 Xming+Putty 显示 Linux 下软件图形界面
- w ndows10即将停止更新,微软开始警告Windows 10 v1909用户即将停止更新服务
- Java 大小写转换
- 面向文档的NoSQL数据库MongoDB
- 又一腾讯应用将停运!企业QQ将于2022年1月31日关闭
- C++_sizeof关键字_实型(也叫浮点型)---C++语言工作笔记011
- pythonfor循环输入_python的for循环
- dataframe保存为txt_Word,PDF,PPT,TXT之间的相互转换方法
- 如何用UE4制作2D游戏文档(五)——战斗篇
- 或非门sr锁存器_d锁存器与sr锁存器的区别
- html5微信mp3播放器代码,[微信音频播放器] html5 audio 制做的微信播放器
- ios 请求头设置token_AFNetworking的请求头设置(token)
热门文章
- Java对异常处理或抛出之后,后面代码会不会再执行?
- Android 出现“此用户无法使用开发者选项”问题
- 小米6 android os,脱离安卓!小米6刷入全新系统:界面炫酷,可流畅日常使用!...
- iis php5.6.8配置,Windows 8.1 + IIS 8.5 + PHP 5.6.3配置
- spring之java配置(springboot推荐的配置方式)
- mysql 1个月多少天_在MySQL日期间隔中,1个月是否与30天相同? 1个季度与3个月相同吗?等等?...
- 双代号网络图节点编号原则_一表多图(表格/横道图/网络图)让计划编制效率提高10倍...
- 2021-01-20 Matlab画图技巧与实例:堆叠图stackedplot
- java 默认焦点_按钮活动焦点阴影默认问题
- HTML学习04之内联框架和表单