【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度( 八 )

< 0 )morphologyEx(g_srcImage, g_dstImage, CV_MOP_OPEN, element); elsemorphologyEx(g_srcImage, g_dstImage, CV_MOP_CLOSE, element); //显示图像 imshow("【开运算/闭运算】",g_dstImage);}//-----------------------------------【on_ErodeDilate( )函数】----------------------------------//描述:【腐蚀/膨胀】窗口的回调函数//-----------------------------------------------------------------------------------------------static void on_ErodeDilate(int, void*){ //偏移量的定义 int offset = g_nErodeDilateNum - g_nMaxIterationNum; //偏移量 int Absolute_offset = offset > 0 ? offset : -offset;//偏移量绝对值 //自定义核 Mat element = getStructuringElement(g_nElementShape, Size(Absolute_offset*2+1, Absolute_offset*2+1), Point(Absolute_offset, Absolute_offset) ); //进行操作 if( offset < 0 )erode(g_srcImage, g_dstImage, element); elsedilate(g_srcImage, g_dstImage, element); //显示图像 imshow("【腐蚀/膨胀】",g_dstImage);}//-----------------------------------【on_TopBlackHat( )函数】--------------------------------//描述:【顶帽运算/黑帽运算】窗口的回调函数//----------------------------------------------------------------------------------------------static void on_TopBlackHat(int, void*){ //偏移量的定义 int offset = g_nTopBlackHatNum - g_nMaxIterationNum;//偏移量 int Absolute_offset = offset > 0 ? offset : -offset;//偏移量绝对值 //自定义核 Mat element = getStructuringElement(g_nElementShape, Size(Absolute_offset*2+1, Absolute_offset*2+1), Point(Absolute_offset, Absolute_offset) ); //进行操作 if( offset < 0 )morphologyEx(g_srcImage, g_dstImage, MORPH_TOPHAT , element); elsemorphologyEx(g_srcImage, g_dstImage, MORPH_BLACKHAT, element); //显示图像 imshow("【顶帽/黑帽】",g_dstImage);}//-----------------------------------【ShowHelpText( )函数】----------------------------------//描述:输出一些帮助信息//----------------------------------------------------------------------------------------------static void ShowHelpText(){//输出一些帮助信息 printf("\n\n\n\t请调整滚动条观察图像效果~\n\n"); printf( "\n\n\t按键操作说明: \n\n""\t\t键盘按键【ESC】或者【Q】- 退出程序\n""\t\t键盘按键【1】- 使用椭圆(Elliptic)结构元素\n""\t\t键盘按键【2】- 使用矩形(Rectangle )结构元素\n""\t\t键盘按键【3】- 使用十字型(Cross-shaped)结构元素\n""\t\t键盘按键【空格SPACE】- 在矩形、椭圆、十字形结构元素中循环\n""\n\n\t\t\t\t\t\t\t\t by浅墨");}
放出一些效果图:
首先是原图:

【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
非常帅气的 有木有!
腐蚀效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
膨胀效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
开运算效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
闭运算效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
顶帽运算效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
黑帽运算效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
好的 , 就放出这些效果图吧 , 具体更多的运行效果大家就自己下载示例程序回去玩~
本篇文章的配套源代码请点击这里下载:
【浅墨入门教程之十一】配套源代码下载
OK , 今天的内容大概就是这些 , 我们下篇文章见:)
【【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度】
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度