//-----------------------------------【程序说明】----------------------------------------------
// 程序名称::膨胀腐蚀练习
// 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();
}
眼前清风
- 粉丝: 9
- 资源: 1
最新资源
- 手套手势检测7-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- CentOS bridge 工具包 bridge-utils-1.6-1.33.x86-64.rpm
- 手势检测7-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 基于python flask实现某瓣数据可视化数据分析平台
- awewq1132323
- 手写流程图检测31-YOLO(v5至v8)、COCO、CreateML、Darknet、Paligemma、TFRecord数据集合集.rar
- frida拦截微信小程序云托管API
- 肝脏及其肿瘤分割的 CT 数据集,已经切片成jpg数据,约2w张数据和mask
- 基于Java的网上教务评教管理系统的设计与实现.doc
- 2024圣诞节海外消费市场趋势及营销策略分析报告
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈