下面是源代码:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>using namespace cv;
using namespace std;Mat g_srcImage, g_dstImage1, g_dstImage2, g_dstImage3, g_dstImage4, g_dstImage5;int g_nBoxFilterValue = 6;     //方框滤波的内核值
int g_nMeanBlurValue = 10;     //均值滤波的内核值
int g_nGaussianBlurValue = 6;  //高斯滤波内核值
int g_nMedianBlurBlurValue = 10;   //中值滤波参数
int g_nBilateralFiterValue = 50;   //双边滤波参数值//声明滚动条回调函数
static void on_BoxFilter(int, void*);   //方框
static void on_MeanBulr(int, void*);    //均值
static void on_GaussianBulr(int, void*);    //高斯
static void on_MedianBlur(int, void*);  //中值
static void on_BilateralFiter(int, void*);  //双边int main()
{g_srcImage = imread("1.jpg");if (!g_srcImage.data){printf("图片载入失败!\n");return -1;}g_dstImage1 = g_srcImage.clone();g_dstImage2 = g_srcImage.clone();g_dstImage3 = g_srcImage.clone();g_dstImage4 = g_srcImage.clone();g_dstImage5 = g_srcImage.clone();//显示原图namedWindow("原图");imshow("原图", g_srcImage);//方框滤波namedWindow("方框滤波");//创建滚动条createTrackbar("内核值:", "方框滤波", &g_nBoxFilterValue, 50, on_BoxFilter);on_BoxFilter(g_nBoxFilterValue, 0);imshow("方框滤波", g_dstImage1);//均值滤波namedWindow("均值滤波");createTrackbar("内核值:", "均值滤波", &g_nMeanBlurValue, 50, on_MeanBulr);on_MeanBulr(g_nMeanBlurValue, 0);imshow("均值滤波", g_dstImage2);//高斯namedWindow("高斯滤波");createTrackbar("内核值:", "高斯滤波", &g_nGaussianBlurValue, 50, on_GaussianBulr);on_GaussianBulr(g_nGaussianBlurValue, 0);imshow("高斯滤波", g_dstImage3);//中值namedWindow("中值滤波");createTrackbar("内核值:", "中值滤波", &g_nMedianBlurBlurValue, 50, on_MedianBlur);on_MedianBlur(g_nMedianBlurBlurValue, 0);imshow("中值滤波", g_dstImage4);//双边namedWindow("双边滤波");createTrackbar("内核值:", "双边滤波", &g_nBilateralFiterValue, 50, on_BilateralFiter);on_BilateralFiter(g_nBilateralFiterValue, 0);imshow("双边滤波", g_dstImage5);waitKey(0);return 0;
}//回调函数//方框
static void on_BoxFilter(int, void*)
{//方框滤波操作boxFilter(g_srcImage, g_dstImage1, -1, Size(g_nBoxFilterValue + 1, g_nBoxFilterValue + 1));//显示imshow("方框滤波", g_dstImage1);
}//均值
static void on_MeanBulr(int, void*)
{blur(g_srcImage, g_dstImage2, Size(g_nMeanBlurValue + 1, g_nMeanBlurValue + 1));imshow("均值滤波", g_dstImage2);
}//高斯
static void on_GaussianBulr(int, void*)
{GaussianBlur(g_srcImage, g_dstImage3, Size(g_nGaussianBlurValue * 2 + 1, g_nGaussianBlurValue * 2 + 1),0,0); //大于1的奇数imshow("高斯滤波", g_dstImage3);
}//中值
static void on_MedianBlur(int, void*)
{medianBlur(g_srcImage, g_dstImage4, g_nMedianBlurBlurValue * 2 + 1);imshow("中值滤波", g_dstImage4);
}//双边
static void on_BilateralFiter(int, void*)
{bilateralFilter(g_srcImage, g_dstImage5, g_nBilateralFiterValue, g_nBilateralFiterValue * 2, g_nBilateralFiterValue / 2);imshow("双边滤波", g_dstImage5);
}

运行结果如下:

C/C++ OpenCV五种滤波器综合示例相关推荐

  1. OpenCV中resize函数五种插值算法的实现过程

    最新版OpenCV2.4.7中,cv::resize函数有五种插值算法:最近邻.双线性.双三次.基于像素区域关系.兰索斯插值.下面用for循环代替cv::resize函数来说明其详细的插值实现过程,其 ...

  2. QT+OpenCV综合示例:图像混合(滑动条)

    QT+OpenCV综合示例:图像混合(滑动条) 1.代码: 2.运行结果: 0)Widget_op.ui (界面文件)设计: 1.代码: 1)opencv_imwrite_Q.pro 添加: INCL ...

  3. QT+OpenCV综合示例:载入、读取图片

    QT+OpenCV综合示例:载入.读取图片 1.代码: 2.运行结果: 下载1 GitHub: 下载2 1.代码: 1)opencv_imwrite_Q.pro 添加: INCLUDEPATH+= D ...

  4. QT学习笔记(五):Qt5的8种标准对话框示例

    QT学习笔记(五):Qt5的8种标准对话框示例 前言 实例展示 1.颜色对话框 2.文件对话框 3.字体对话框 4.输入对话框 5.消息对框 6.进度对话框 7.错误信息对话框 8.向导对话框. 前言 ...

  5. Flutter进阶篇(4)-- Flutter的Future异步详解一、认识Future二、创建多个Future的执行步骤三、then函数嵌套使用的执行步骤四、综合示例五、我们来看看Future的源码

    https://cloud.tencent.com/developer/article/1375846 本文首发在公众号Flutter那些事,欢迎大家多多关注. 说明:本文中的所有函数的引用在main ...

  6. 一定能用到的简单但实用的五种按钮样式(原生HTML+CSS步骤详解,含详细注释)

    前言一   按钮在前端开发中往往是一个必不可少的元素,也有许多精美好看的样式资源供开发者直接使用.但博主认为,对于初学者而言,总是去cv别人做好的,而不理解其中的原理,是很不好的.   本人作为一名计 ...

  7. Matlab滤波器设计示例

    目录 1. 概要 2. 低通滤波器设计例 with designfilt() 2.1 要点一:归一化频率 2.2 要点二:如何使用所生成的滤波器 3. designfilt() 的功能 3.1 能设计 ...

  8. 五种基于 MapReduce 的并行计算框架介绍及性能测试

    并行计算模型和框架 目前开源社区有许多并行计算模型和框架可供选择,按照实现方式.运行机制.依附的产品生态圈等可以被划分为几个类型,每个类型各有优缺点,如果能够对各类型的并行计算框架都进行深入研究及适当 ...

  9. 监测Squid日志的五种方法

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 原贴:h ...

最新文章

  1. linux igmp v3 过滤ip,网络 – Linux和IGMPv3上的多播加入
  2. 百度地图JavaScript API覆盖物旋转时出现偏移
  3. .ipynb文件的使用问题
  4. java链表实现多项式的运算
  5. 新版Namecheap域名转出注册商方法解锁及获取转移
  6. 输入一个字符,判断该字符是大写英文字符,小写英文字符,空格,还是其他字符
  7. 为什么华为a1路由器网速变慢_华为a1路由器wifi经常掉线怎么办
  8. unity简单的脚本 播放3D立体音效(近大远小效果)
  9. 采购订单中带账户分配的总账科目确定(M和E的区别)
  10. 伤害世界怎么自建服务器,伤害世界服务器架设图文教程
  11. CAD编辑指南4:新建空白图纸以及添加文字标注
  12. python 波动率锥_推广 || 12个小时干货分享!上海财大期权实战特训课程(11月)...
  13. BZOJ3356 : [Usaco2004 Jan]禁闭围栏
  14. 非正式协议与正式协议的区别
  15. 实现JS脏话筛选替换的几种途径
  16. 武大在职博士有计算机专业吗,武汉大学北京在职博士和全日制博士比怎么样
  17. 认知神经科学系列|(2)细胞机制与认知
  18. 外星人 m18参数配置 外星人 m18怎么样
  19. python-按首字母分类形成列表
  20. 如果有不限额度,稳定的Facebook广告账号,你也能爆单?!

热门文章

  1. 前出塞数据挖掘的一些必须了解的概念
  2. 作为现代行业才有的程序员为何地位不高?
  3. openeim 成片的蝴蝶兰盛开在绿树之间
  4. 深圳不完全启示录之初来乍到----1
  5. 有滋有味了freeeim
  6. 点讯输入法S60数字键通用版V6.0(官方签名正式版)
  7. 好的原程序做出好的软件
  8. 再谈要不要成为全栈工程师
  9. 重磅!尤雨溪公布 Vue 3.0 开发路线
  10. 第三节:创建一个Vue实例,超简单