//-----------------------------------【程序说明】----------------------------------------------
// 程序名称::膨胀腐蚀练习
// IDE版本:Visual Studio 2010
// OpenCV版本: 2.4.8
// 学习者:眼前
// 时间:2014年7月6日
//------------------------------------------------------------------------------------------------
//------------------------------------【头文件】------------------------------------------------
// 描述:程序所依赖的头文件
//------------------------------------------------------------------------------------------------
#include <opencv2/opencv.hpp>
#include <iostream>
//------------------------------------【命名空间声明】----------------------------------------
// 描述:程序所使用的命名空间
//------------------------------------------------------------------------------------------------
using namespace std;
using namespace cv;
//-----------------------------------【全局变量声明】--------------------------------------
// 描述:全局变量声明
//-----------------------------------------------------------------------------------------------
Mat g_srcImage, g_dstImage;//原始图和效果图
int g_nTrackbarNumer = 0;//0表示腐蚀erode,1表示膨胀dilate
int g_nStructElementSize = 2;//结构元素尺寸
//-----------------------------------【全局函数声明】--------------------------------------
// 描述:全局函数声明
//-----------------------------------------------------------------------------------------------
void Process();//腐蚀膨胀的处理函数
void on_TrackbarNumChange(int, void *);//回调函数
void on_ElementSizeChange(int, void *);//回调函数
//-----------------------------------【主函数】--------------------------------------------
// 描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main()
{
//改变console字体颜色
system("color 3E");
//载入原图像
g_srcImage = imread("miao1.jpg");
if( !g_srcImage.data ) { printf("Error! 读取原图像失败~\n"); return false; }
//显示原图像
namedWindow("【原图像】");
imshow("【原图像】", g_srcImage);
//进行初次腐蚀并显示效果图
namedWindow("【效果图】");
//获取自定义核
Mat element = getStructuringElement( MORPH_RECT, Size(2*g_nStructElementSize+1, 2*g_nStructElementSize+1), Point( g_nStructElementSize, g_nStructElementSize ));
erode(g_srcImage, g_dstImage, element);
imshow("【效果图】", g_dstImage);
//创建轨迹条
createTrackbar("腐蚀/膨胀", "【效果图】", &g_nTrackbarNumer, 1, on_TrackbarNumChange);
createTrackbar("内核尺寸", "【效果图】", &g_nStructElementSize, 25, on_ElementSizeChange);
//输出帮助信息
cout<<endl<<"\t\t运行成功啦!请拖动滚动条观察图像效果~\n\n"
<<"\t\t按下 'e' 键时,退出程序~\n"
<<"\n\n\n\t\t\t\t by眼前";
//轮询获取按键信息,若下e键,程序退出
while(char(waitKey(1)) != 'e') {}
return 0;
}
//-----------------------------【Process( )函数】------------------------------------------
// 描述:进行自定义的腐蚀和膨胀操作
//---------------------------------------------------------------------------------------------
void Process()
{
//获取自定义核
Mat element = getStructuringElement(MORPH_RECT, Size(2*g_nStructElementSize+1, 2*g_nStructElementSize+1), Point(g_nStructElementSize, g_nStructElementSize));
//进行腐蚀或膨胀运算
if(g_nTrackbarNumer == 0) {
erode(g_srcImage, g_dstImage, element);
}
else {
dilate(g_srcImage, g_dstImage, element);
}
//显示效果图
imshow("【效果图】", g_dstImage);
}
//-----------------------------【on_TrackbarNumChange( )函数】----------------------
// 描述:腐蚀和膨胀之间切换开关的回调函数
//---------------------------------------------------------------------------------------------
void on_TrackbarNumChange(int, void *)
{
//腐蚀和膨胀之间效果已经切换,回调函数体内需调用一次Process函数,使改变后的效果立即生效并显示出来
Process();
}
//-----------------------------【on_ElementSizeChange( )函数】----------------------
// 描述:腐蚀和膨胀操作内核改变时的回调函数
//---------------------------------------------------------------------------------------------
void on_ElementSizeChange(int, void *)
{
//内核尺寸已经改变,回调函数体内需调用一次Process函数,使改变后的效果立即生效并显示出来
Process();
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1. 运行环境:Visual studio 2010 2. opencv版本:2.4.8 3. 运行方法:(1)Debug目录或Release目录下直接运行exe程序。(2)打开sln解决方案在VS2010平台下编译运行。 4. 本程序是在参考浅墨同学的教程后,手工输入完成,强化理解并作为实例进行练习。再此感谢浅墨同学的无私分享。
资源推荐
资源详情
资源评论
收起资源包目录
.rar (57个子文件)
腐蚀膨胀练习
Release
腐蚀膨胀练习.exe 16KB
腐蚀膨胀练习.pdb 939KB
lena.jpg 19KB
腐蚀膨胀练习.sln 921B
腐蚀膨胀练习.suo 11KB
Debug
腐蚀膨胀练习.exe 63KB
miao1.jpg 63KB
腐蚀膨胀练习.pdb 1.42MB
腐蚀膨胀练习.ilk 600KB
lena.jpg 19KB
腐蚀膨胀练习
Release
CL.write.1.tlog 428B
CL.read.1.tlog 16KB
mt.read.1.tlog 902B
腐蚀膨胀练习.log 3KB
腐蚀膨胀练习.exe.intermediate.manifest 381B
腐蚀膨胀练习.lastbuildstate 89B
mt.command.1.tlog 516B
cl.command.1.tlog 726B
main.obj 1MB
link.write.1.tlog 616B
link.command.1.tlog 4KB
link.read.1.tlog 7KB
mt.write.1.tlog 334B
vc100.pdb 732KB
腐蚀膨胀练习.vcxproj 4KB
miao1.jpg 63KB
腐蚀膨胀练习.vcxproj.filters 942B
main.cpp 4KB
Debug
vc100.idb 483KB
腐蚀膨胀练习.exe.embed.manifest.res 472B
link.2636.write.1.tlog 2B
腐蚀膨胀练习.exe.embed.manifest 406B
CL.write.1.tlog 420B
link.2636-cvtres.write.1.tlog 2B
CL.read.1.tlog 17KB
mt.read.1.tlog 370B
rc.write.1.tlog 350B
腐蚀膨胀练习.log 3KB
rc.read.1.tlog 342B
link.2636-cvtres.read.1.tlog 2B
腐蚀膨胀练习.exe.intermediate.manifest 381B
腐蚀膨胀练习.lastbuildstate 87B
mt.command.1.tlog 410B
cl.command.1.tlog 706B
link-cvtres.read.1.tlog 2B
main.obj 166KB
link.write.1.tlog 914B
腐蚀膨胀练习_manifest.rc 202B
link.2636.read.1.tlog 2B
link-cvtres.write.1.tlog 2B
link.command.1.tlog 3KB
rc.command.1.tlog 578B
link.read.1.tlog 7KB
mt.write.1.tlog 370B
vc100.pdb 940KB
lena.jpg 19KB
腐蚀膨胀练习.vcxproj.user 143B
共 57 条
- 1
资源评论
- srm2014-07-11可以使用,谢谢楼主~
眼前清风
- 粉丝: 9
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言-leetcode题解之74-search-a-2d-matrix.c
- C语言-leetcode题解之73-set-matrix-zeroes.c
- 树莓派物联网智能家居基础教程
- YOLOv5深度学习目标检测基础教程
- (源码)基于Arduino和Nextion的HMI人机界面系统.zip
- (源码)基于 JavaFX 和 MySQL 的影院管理系统.zip
- (源码)基于EAV模型的动态广告位系统.zip
- (源码)基于Qt的长沙地铁换乘系统.zip
- (源码)基于ESP32和DM02A模块的智能照明系统.zip
- (源码)基于.NET Core和Entity Framework Core的学校管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功