C/C++ OpenCV五种滤波器综合示例
下面是源代码:
#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五种滤波器综合示例相关推荐
- OpenCV中resize函数五种插值算法的实现过程
最新版OpenCV2.4.7中,cv::resize函数有五种插值算法:最近邻.双线性.双三次.基于像素区域关系.兰索斯插值.下面用for循环代替cv::resize函数来说明其详细的插值实现过程,其 ...
- QT+OpenCV综合示例:图像混合(滑动条)
QT+OpenCV综合示例:图像混合(滑动条) 1.代码: 2.运行结果: 0)Widget_op.ui (界面文件)设计: 1.代码: 1)opencv_imwrite_Q.pro 添加: INCL ...
- QT+OpenCV综合示例:载入、读取图片
QT+OpenCV综合示例:载入.读取图片 1.代码: 2.运行结果: 下载1 GitHub: 下载2 1.代码: 1)opencv_imwrite_Q.pro 添加: INCLUDEPATH+= D ...
- QT学习笔记(五):Qt5的8种标准对话框示例
QT学习笔记(五):Qt5的8种标准对话框示例 前言 实例展示 1.颜色对话框 2.文件对话框 3.字体对话框 4.输入对话框 5.消息对框 6.进度对话框 7.错误信息对话框 8.向导对话框. 前言 ...
- Flutter进阶篇(4)-- Flutter的Future异步详解一、认识Future二、创建多个Future的执行步骤三、then函数嵌套使用的执行步骤四、综合示例五、我们来看看Future的源码
https://cloud.tencent.com/developer/article/1375846 本文首发在公众号Flutter那些事,欢迎大家多多关注. 说明:本文中的所有函数的引用在main ...
- 一定能用到的简单但实用的五种按钮样式(原生HTML+CSS步骤详解,含详细注释)
前言一 按钮在前端开发中往往是一个必不可少的元素,也有许多精美好看的样式资源供开发者直接使用.但博主认为,对于初学者而言,总是去cv别人做好的,而不理解其中的原理,是很不好的. 本人作为一名计 ...
- Matlab滤波器设计示例
目录 1. 概要 2. 低通滤波器设计例 with designfilt() 2.1 要点一:归一化频率 2.2 要点二:如何使用所生成的滤波器 3. designfilt() 的功能 3.1 能设计 ...
- 五种基于 MapReduce 的并行计算框架介绍及性能测试
并行计算模型和框架 目前开源社区有许多并行计算模型和框架可供选择,按照实现方式.运行机制.依附的产品生态圈等可以被划分为几个类型,每个类型各有优缺点,如果能够对各类型的并行计算框架都进行深入研究及适当 ...
- 监测Squid日志的五种方法
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 原贴:h ...
最新文章
- linux igmp v3 过滤ip,网络 – Linux和IGMPv3上的多播加入
- 百度地图JavaScript API覆盖物旋转时出现偏移
- .ipynb文件的使用问题
- java链表实现多项式的运算
- 新版Namecheap域名转出注册商方法解锁及获取转移
- 输入一个字符,判断该字符是大写英文字符,小写英文字符,空格,还是其他字符
- 为什么华为a1路由器网速变慢_华为a1路由器wifi经常掉线怎么办
- unity简单的脚本 播放3D立体音效(近大远小效果)
- 采购订单中带账户分配的总账科目确定(M和E的区别)
- 伤害世界怎么自建服务器,伤害世界服务器架设图文教程
- CAD编辑指南4:新建空白图纸以及添加文字标注
- python 波动率锥_推广 || 12个小时干货分享!上海财大期权实战特训课程(11月)...
- BZOJ3356 : [Usaco2004 Jan]禁闭围栏
- 非正式协议与正式协议的区别
- 实现JS脏话筛选替换的几种途径
- 武大在职博士有计算机专业吗,武汉大学北京在职博士和全日制博士比怎么样
- 认知神经科学系列|(2)细胞机制与认知
- 外星人 m18参数配置 外星人 m18怎么样
- python-按首字母分类形成列表
- 如果有不限额度,稳定的Facebook广告账号,你也能爆单?!