OpenCV 图像平滑处理
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp" using namespace std;
using namespace cv; /// 全局变量
int DELAY_CAPTION = ;
int DELAY_BLUR = ;
int MAX_KERNEL_LENGTH = ; Mat src; Mat dst;
char window_name[] = "Filter Demo 1"; /// 函数申明
int display_caption( char* caption );
int display_dst( int delay ); /**
* main 函数
*/
int main( int argc, char** argv )
{
namedWindow( window_name, CV_WINDOW_AUTOSIZE ); /// 载入原图像
src = imread( "../images/lena.jpg", ); if( display_caption( "Original Image" ) != ) { return ; } dst = src.clone();
if( display_dst( DELAY_CAPTION ) != ) { return ; } /// 使用 均值平滑
if( display_caption( "Homogeneous Blur" ) != ) { return ; } for ( int i = ; i < MAX_KERNEL_LENGTH; i = i + )
{ blur( src, dst, Size( i, i ), Point(-,-) );
if( display_dst( DELAY_BLUR ) != ) { return ; } } /// 使用高斯平滑
if( display_caption( "Gaussian Blur" ) != ) { return ; } for ( int i = ; i < MAX_KERNEL_LENGTH; i = i + )
{ GaussianBlur( src, dst, Size( i, i ), , );
if( display_dst( DELAY_BLUR ) != ) { return ; } } /// 使用中值平滑
if( display_caption( "Median Blur" ) != ) { return ; } for ( int i = ; i < MAX_KERNEL_LENGTH; i = i + )
{ medianBlur ( src, dst, i );
if( display_dst( DELAY_BLUR ) != ) { return ; } } /// 使用双边平滑
if( display_caption( "Bilateral Blur" ) != ) { return ; } for ( int i = ; i < MAX_KERNEL_LENGTH; i = i + )
{ bilateralFilter ( src, dst, i, i*, i/ );
if( display_dst( DELAY_BLUR ) != ) { return ; } } /// 等待用户输入
display_caption( "End: Press a key!" ); waitKey();
return ;
} int display_caption( char* caption )
{
dst = Mat::zeros( src.size(), src.type() );
putText( dst, caption,
Point( src.cols/, src.rows/),
CV_FONT_HERSHEY_COMPLEX, , Scalar(, , ) ); imshow( window_name, dst );
int c = waitKey( DELAY_CAPTION );
if( c >= ) { return -; }
return ;
} int display_dst( int delay )
{
imshow( window_name, dst );
int c = waitKey ( delay );
if( c >= ) { return -; }
return ;
}
OpenCV 图像平滑处理的更多相关文章
- OpenCV图像平滑处理
图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函数如下: blur GaussianBlur medianBlur bilateralFilter 原理 No ...
- 八.使用OpenCv图像平滑操作
1.cvSmooth函数 函数 cvSmooth 可使用简单模糊.简单无缩放变换的模糊.中值模糊.高斯模糊.双边滤波的不论什么一种方法平滑图像.每一种方法都有自己的特点以及局限. 没有缩放的图像平滑仅 ...
- OpenCV 之 图像平滑
1 图像平滑 图像平滑,可用来对图像进行去噪 (noise reduction) 或 模糊化处理 (blurring),实际上图像平滑仍然属于图像空间滤波的一种 (低通滤波) 既然是滤波,则图像中任 ...
- 图像滤波与OpenCV中的图像平滑处理
.About图像滤波 频率:可以这样理解图像频率,图像中灰度的分布构成一幅图像的纹理.图像的不同本质上是灰度分布规律的不同.但是诸如"蓝色天空"样的图像有着大面积近似的灰度强度,而 ...
- OpenCV图像处理篇之图像平滑
图像平滑算法 图像平滑与图像模糊是同一概念,主要用于图像的去噪.平滑要使用滤波器.为不改变图像的相位信息,一般使用线性滤波器,其统一形式例如以下: %20\Large%20g(i,j)=\sum_{k ...
- 13、OpenCV实现图像的空间滤波——图像平滑
1.空间滤波基础概念 1.空间滤波基础 空间滤波一词中滤波取自数字信号处理,指接受或拒绝一定的频率成分,但是空间滤波学习内容实际上和通过傅里叶变换实现的频域的滤波是等效的,故而也称为滤波.空间滤波主要 ...
- OpenCV学习笔记(8)——图像平滑
使用不同的低筒滤波器对图像进行模糊 使用自定义的率弄起对图像进行卷积(2D卷积) 2D卷积 与信号一样,我们也可以对2D图像实施低通滤波,高通滤波等.LPF帮助我们去除噪声,模糊图像.而HPF帮助我们 ...
- Python 图像处理 OpenCV (7):图像平滑(滤波)处理
前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...
- OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice &q ...
随机推荐
- Django2.0——中间件
Django中间件middleware本质是一个类,在请求到返回的中间,类中不同的方法会在指定的时机中被触发.setting.py的变量MIDDLEWARE_CLASSES中的每一个元素都是中间件,且 ...
- DOCKER 学习笔记6 WINDOWS版尝鲜
前言 经过前两节的学习,我们已经可以在Dokcer 环境下部署基本的主流环境有: Springboot 后端 MYSQL 持久化数据 以及Nginx 作为反向代理 虽说服务器上面的也没啥不好,但是毕竟 ...
- Python—后台运行(nohup 、&、 2>&1详解)
一.脚本文件(test.py) # -*- coding: UTF-8 -*- import time print("hello"," python") os. ...
- 初学C#之运算符和关系表达式
㈠运算符和关系表达式 一元运算符++.-- 前加和后加区别,事例++在后如下: ; ; //结果age=19 说明age++在表达式中age的值也+1.结果sum=8,原因age++,++在后用age ...
- windows服务器搭建SVN[多项目设置方法]
https://tortoisesvn.net/downloads.html 根据系统版本进行下载,下载后正常一路正常安装. 第一.设置版本号仓库目录,比如:cdengine 第二.在cdengine ...
- python字典常用方法
字典(Dictionary) 字典是一个无序.可变和有索引的集合.在 Python 中,字典用花括号编写,拥有键和值. 实例 创建并打印字典: thisdict = { "brand&quo ...
- 个人训练记录(UPD 9.16)
本文章记录一些较难的题,摘自自己的blog中的其他文章.也有些单独成章有点浪费的题也写在里面了. 2019.7.15-2019.7.21 1182F(2900) 题意:求在区间 \([a,b]\) 中 ...
- 关于本人:-D(必读)
关于本人 本人目前从事iOS开发,但心中也有一个全栈的梦想,希望与大家共勉! 关于博客内容 自己会不时分享一些iOS方面的技术点.总结的一些经验及工具类.还有学习其他语言过程中的笔记.技术.总结及心得 ...
- spark安装和使用
local模式 概述 local模式就是在一台计算机上运行spark程序,通常用于在本机上练手和测试,它将线程映射为worker. 1)local: 所有计算都运行在一个线程当中,没有任何并行计算,通 ...
- SaltStack schedule功能
1.确保计划中没有作业 salt.states.schedule.absent(name, **kwargs) 2.确保在计划中禁用的作业 salt.states.schedule.disabled( ...