//-----------------------------------【程序说明】----------------------------------------------
// 程序名称::【OpenCV入门教程之八】分离颜色通道&多通道图像混合 配套源码
// 开发所用OpenCV版本:2.4.8
// 2014年3月31 日 Create by 浅墨
// 配套博文链接:http://blog.csdn.net/poem_qianmo/article/details/22745559
// PS:程序结合配合博文学习效果更佳
// 浅墨的微博:@浅墨_毛星云
//------------------------------------------------------------------------------------------------
//-----------------------------------【头文件包含部分】---------------------------------------
// 描述:包含程序所依赖的头文件
//----------------------------------------------------------------------------------------------
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
//-----------------------------------【命名空间声明部分】---------------------------------------
// 描述:包含程序所使用的命名空间
//-----------------------------------------------------------------------------------------------
using namespace std;
using namespace cv;
//-----------------------------------【全局变量声明部分】--------------------------------------
// 描述:全局变量声明
//-----------------------------------------------------------------------------------------------
Mat g_srcImage,g_dstImage1,g_dstImage2,g_dstImage3;//存储图片的Mat类型
int g_nBoxFilterValue=3; //方框滤波参数值
int g_nMeanBlurValue=3; //均值滤波参数值
int g_nGaussianBlurValue=3; //高斯滤波参数值
//-----------------------------------【全局函数声明部分】--------------------------------------
// 描述:全局函数声明
//-----------------------------------------------------------------------------------------------
//四个轨迹条的回调函数
static void on_BoxFilter(int, void *); //均值滤波
static void on_MeanBlur(int, void *); //均值滤波
static void on_GaussianBlur(int, void *); //高斯滤波
//-----------------------------------【main( )函数】--------------------------------------------
// 描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{
//改变console字体颜色
system("color 5E");
// 载入原图
g_srcImage = imread( "1.jpg", 1 );
if( !g_srcImage.data ) { printf("Oh,no,读取srcImage错误~! \n"); return false; }
//克隆原图到三个Mat类型中
g_dstImage1 = g_srcImage.clone( );
g_dstImage2 = g_srcImage.clone( );
g_dstImage3 = g_srcImage.clone( );
//显示原图
namedWindow("【<0>原图窗口】", 1);
imshow("【<0>原图窗口】",g_srcImage);
//=================【<1>方框滤波】==================
//创建窗口
namedWindow("【<1>方框滤波】", 1);
//创建轨迹条
createTrackbar("内核值:", "【<1>方框滤波】",&g_nBoxFilterValue, 40,on_BoxFilter );
on_MeanBlur(g_nBoxFilterValue,0);
imshow("【<1>方框滤波】", g_dstImage1);
//================================================
//=================【<2>均值滤波】==================
//创建窗口
namedWindow("【<2>均值滤波】", 1);
//创建轨迹条
createTrackbar("内核值:", "【<2>均值滤波】",&g_nMeanBlurValue, 40,on_MeanBlur );
on_MeanBlur(g_nMeanBlurValue,0);
//================================================
//=================【<3>高斯滤波】=====================
//创建窗口
namedWindow("【<3>高斯滤波】", 1);
//创建轨迹条
createTrackbar("内核值:", "【<3>高斯滤波】",&g_nGaussianBlurValue, 40,on_GaussianBlur );
on_GaussianBlur(g_nGaussianBlurValue,0);
//================================================
//输出一些帮助信息
cout<<endl<<"\t嗯。好了,请调整滚动条观察图像效果~\n\n"
<<"\t按下“q”键时,程序退出~!\n"
<<"\n\n\t\t\t\t by浅墨";
//按下“q”键时,程序退出
while(char(waitKey(1)) != 'q') {}
return 0;
}
//-----------------------------【on_BoxFilter( )函数】------------------------------------
// 描述:方框滤波操作的回调函数
//-----------------------------------------------------------------------------------------------
static void on_BoxFilter(int, void *)
{
//方框滤波操作
boxFilter( g_srcImage, g_dstImage1, -1,Size( g_nBoxFilterValue+1, g_nBoxFilterValue+1));
//显示窗口
imshow("【<1>方框滤波】", g_dstImage1);
}
//-----------------------------【on_MeanBlur( )函数】------------------------------------
// 描述:均值滤波操作的回调函数
//-----------------------------------------------------------------------------------------------
static void on_MeanBlur(int, void *)
{
//均值滤波操作
blur( g_srcImage, g_dstImage2, Size( g_nMeanBlurValue+1, g_nMeanBlurValue+1), Point(-1,-1));
//显示窗口
imshow("【<2>均值滤波】", g_dstImage2);
}
//-----------------------------【ContrastAndBright( )函数】------------------------------------
// 描述:高斯滤波操作的回调函数
//-----------------------------------------------------------------------------------------------
static void on_GaussianBlur(int, void *)
{
//高斯滤波操作
GaussianBlur( g_srcImage, g_dstImage3, Size( g_nGaussianBlurValue*2+1, g_nGaussianBlurValue*2+1 ), 0, 0);
//显示窗口
imshow("【<3>高斯滤波】", g_dstImage3);
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
浅墨出品,分享精神至上~ 压缩包内包含四个程序的详细注释源码。分别是用高斯滤波,均值滤波,方框滤波来模糊一张唯美图片。最后还有一个综合示例程序,结合这三种滤波操作,通过调整轨迹条的位置,来动态得到不同的图像模糊效果,有一定的可玩性~have fun~~~ 博文《【OpenCV入门教程之八】线性滤波专场:方框滤波、均值滤波与高斯滤波》的配套详细注释源代码。 博文链接: http://blog.csdn.net/poem_qianmo/article/details/22745559 1.已将dll打包到Release文件夹下,运行Release文件夹中的exe可以直接看到运行结果. 2.源代码运行需要进行OpenCV+VS开发环境的配置。可以参看我写的配置博文: http://blog.csdn.net/poem_qianmo/article/details/19809337 3.写作当前代码时配套使用的OpenCV版本: 2.4.8 4.推荐代码结合博文一起看,学习效果更佳。 by浅墨
资源推荐
资源详情
资源评论
收起资源包目录
【C++】OpenCV图像模糊示例程序 by浅墨 (102个子文件)
main.cpp 5KB
main.cpp 2KB
main.cpp 2KB
main.cpp 2KB
opencv_core248.dll 2MB
opencv_core248.dll 2MB
opencv_core248.dll 2MB
opencv_core248.dll 2MB
opencv_highgui248.dll 1.98MB
opencv_highgui248.dll 1.98MB
opencv_highgui248.dll 1.98MB
opencv_highgui248.dll 1.98MB
opencv_imgproc248.dll 1.82MB
opencv_imgproc248.dll 1.82MB
opencv_imgproc248.dll 1.82MB
opencv_imgproc248.dll 1.82MB
OpenCVdemo5.exe 17KB
blur.exe 12KB
GaussianBlur.exe 12KB
boxFilter.exe 12KB
GaussianBlur.vcxproj.filters 942B
blur.vcxproj.filters 942B
OpenCVdemo5.vcxproj.filters 942B
boxFilter.vcxproj.filters 942B
vc100.idb 339KB
vc100.idb 339KB
1.jpg 487KB
1.jpg 487KB
1.jpg 87KB
1.jpg 87KB
1.jpg 87KB
1.jpg 87KB
1.jpg 87KB
1.jpg 87KB
OpenCVdemo5.lastbuildstate 65B
OpenCVdemo5.lastbuildstate 63B
boxFilter.lastbuildstate 63B
boxFilter.lastbuildstate 61B
boxFilter.log 5KB
OpenCVdemo5.log 5KB
boxFilter.log 3KB
OpenCVdemo5.log 3KB
boxFilter.exe.embed.manifest 406B
OpenCVdemo5.exe.embed.manifest 406B
boxFilter.exe.intermediate.manifest 381B
OpenCVdemo5.exe.intermediate.manifest 381B
boxFilter.exe.intermediate.manifest 381B
OpenCVdemo5.exe.intermediate.manifest 381B
main.obj 933KB
main.obj 919KB
main.obj 143KB
main.obj 107KB
OpenCVdemo5.pdb 603KB
GaussianBlur.pdb 587KB
blur.pdb 587KB
boxFilter.pdb 579KB
vc100.pdb 484KB
vc100.pdb 484KB
vc100.pdb 404KB
vc100.pdb 396KB
OpenCVdemo5_manifest.rc 212B
boxFilter_manifest.rc 208B
OpenCVdemo5.exe.embed.manifest.res 472B
boxFilter.exe.embed.manifest.res 472B
GaussianBlur.sln 903B
OpenCVdemo5.sln 900B
boxFilter.sln 894B
blur.sln 879B
OpenCVdemo5.suo 16KB
GaussianBlur.suo 16KB
blur.suo 16KB
boxFilter.suo 16KB
link.command.1.tlog 4KB
link.command.1.tlog 4KB
link.command.1.tlog 3KB
link.command.1.tlog 3KB
cl.command.1.tlog 674B
cl.command.1.tlog 658B
cl.command.1.tlog 654B
cl.command.1.tlog 638B
rc.command.1.tlog 572B
rc.command.1.tlog 536B
cl.write.1.tlog 230B
cl.write.1.tlog 226B
cl.write.1.tlog 214B
cl.write.1.tlog 210B
rc.write.1.tlog 2B
rc.write.1.tlog 2B
rc.read.1.tlog 2B
rc.read.1.tlog 2B
cl.read.1.tlog 2B
cl.read.1.tlog 2B
cl.read.1.tlog 2B
cl.read.1.tlog 2B
blur.vcxproj.user 143B
GaussianBlur.vcxproj.user 143B
OpenCVdemo5.vcxproj.user 143B
boxFilter.vcxproj.user 143B
GaussianBlur.vcxproj 5KB
boxFilter.vcxproj 5KB
共 102 条
- 1
- 2
浅墨_毛星云
- 粉丝: 4w+
- 资源: 80
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现开发的使用整数小波变换对图像进行3级分解和重构的程序
- 基于matlab实现读取视频文件中的图像,并对图像中的运动目标检测,循环.rar
- 华师调节效应和中介效应分析教学讲义 温忠麟
- 2023年更新儒家文化数据大全包含明清进士、书院数量、孔庙遗存
- 深度学习要点优缺点实际应用,代码案例和代码解析
- LBMA,SCE,CMRT冲突矿产相关规则和认证倡议机制培训+经典应用程序
- 企业寻租程度(超额管理费用测度)(2006-2020)stata原始数据+do文件+参考文献
- 【stata命令】市场分割-市场一体化-区域一体化指数stata计算教程
- 基于matlab实现移相全桥控制双向DCDC变换器matlab仿真原理图.rar
- 基于matlab实现小波分析应用(Matlab实例源程序)-.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页