2.5 黑帽(Black Hat)
“闭运算”的结果图与原图像之差,用来分离比临近点暗一些的斑块,效果图有着非常完美的轮廓
数学表达式:
dst = (src,) = close(src,) - src
黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,且这一操作和选择的核的大小相关
3.1 函数
void morphologyEx( InputArray src, OutputArray dst, int op, InputArray kernel,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT,const Scalar& borderValue=http://www.kingceram.com/post/morphologyDefaultBorderValue() );
作用:该函数可以进行形态学滤波的操作,里面包含了开运算、闭运算、形态学梯度、顶帽、黑帽、腐蚀、膨胀等 。
参数详情:
参数1:输入图像,即源图像,填Mat类的对象即可 。图像位深应该为以下五种之一:CV_8U, ,,或 。
参数2:类型的dst,即目标图像,函数的输出参数,需要和源图片有一样的尺寸和类型 。
参数3:int类型的op,表示形态学运算的类型,可以是如下之一的标识符:
另有CV版本的标识符也可选择,如,,,等,这应该是.0系列版本遗留下来的标识符,和上面的“”一样的效果 。
参数4:类型的,形态学运算的内核 。若为NULL时,表示的是使用参考点位于中心3x3的核 。
我们一般使用函数 t()配合这个参数的使用 。
t()函数会返回指定形状和尺寸的结构元素(内核矩阵) 。关于t()函数(具体参照第25篇)
参数5:Point类型的,锚的位置,其有默认值(-1,-1),表示锚位于中心 。
参数6:int类型的,迭代使用函数的次数,默认值为1 。
参数7:int类型的,用于推断图像外部像素的某种边界模式 。注意它有默认值。
参数8:const &类型的,当边界为常数时的边界值,有默认值(),一般我们不用去管他 。需要用到它时,可以看官方文档中的er()函数得到更详细的解释 。
使用()函数,一般我们只需要填前面的四个参数,后面的四个参数都有默认值 。
3.2 函数的源代码
//-----------------------------------【erode()函数中文注释版源代码】----------------------------//说明:以下代码为来自于计算机开源视觉库OpenCV的官方源代码//源码路径:…\opencv\sources\modules\imgproc\src\morph.cpp//源文件中如下代码的起始行数:1369行//--------------------------------------------------------------------------------------------------------void cv::morphologyEx( InputArray _src,OutputArray _dst, int op,InputArray kernel, Pointanchor, int iterations,int borderType, constScalar& borderValue ){//拷贝Mat数据到临时变量Mat src = http://www.kingceram.com/post/_src.getMat(), temp;_dst.create(src.size(), src.type());Mat dst = _dst.getMat();//一个大switch,根据不同的标识符取不同的操作switch( op ){case MORPH_ERODE:erode( src, dst, kernel, anchor, iterations, borderType, borderValue );break;case MORPH_DILATE:dilate( src, dst, kernel, anchor, iterations, borderType, borderValue );break;case MORPH_OPEN:erode( src, dst, kernel, anchor, iterations, borderType, borderValue );dilate( dst, dst, kernel, anchor, iterations, borderType, borderValue );break;case CV_MOP_CLOSE:dilate( src, dst, kernel, anchor, iterations, borderType, borderValue );erode( dst, dst, kernel, anchor, iterations, borderType, borderValue );break;case CV_MOP_GRADIENT:erode( src, temp, kernel, anchor, iterations, borderType, borderValue );dilate( src, dst, kernel, anchor, iterations, borderType, borderValue );dst -= temp;break;case CV_MOP_TOPHAT:if( src.data != dst.data )temp = dst;erode( src, temp, kernel, anchor, iterations, borderType, borderValue );dilate( temp, temp, kernel, anchor,iterations, borderType, borderValue );dst = src - temp;break;case CV_MOP_BLACKHAT:if( src.data != dst.data )temp = dst;dilate( src, temp, kernel, anchor, iterations, borderType, borderValue);erode( temp, temp, kernel, anchor, iterations, borderType, borderValue);dst = temp - src;break;default:CV_Error( CV_StsBadArg,"unknown morphological operation" );}}
- 二 形态学图像处理:开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- 使用计算机视觉和深度学习创建现代OCR管道
- PHP 个人博客网站 计算机毕业设计源码39418
- 计算机关机时安装更新失败,电脑关机的时候一直在安装更新失败怎么处理
- ccf中文期刊目录_重磅!中国计算机学会推荐中文科技期刊目录
- 计算机宽带拨号测试,100M宽带,连光调制解调器拨号联通官网速度测试为100m
- 中国计算机学会推荐中文科技期刊目录
- 计算机网络原理【五】之 数据链路层与局域网
- 【计算机网络笔记】- 2.物理层概述
- 计算机网络之数据链路层与局域网 - 多路访问控制协议