形态学可以对着二值图操作,好像也能对着灰度图操作,返回的还是灰度图。

利用morphologyEx这个函数可以方便的对图像进行一系列的膨胀腐蚀组合。

函数讲解

●函数原型
○c++

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 = morphologyDefaultBorderValue() )

○Android

void morphologyEx(Mat src, Mat dst, int op, Mat kernel, Point anchor, int iterations, int borderType, Scalar borderValue)

●参数解释
○src:源图像Mat对象
○dst:目标图像Mat对象
○op:操作的类型,通过源码我们得知总共有以下几种类型:

enum MorphTypes{MORPH_ERODE    = 0, //腐蚀MORPH_DILATE   = 1, //膨胀MORPH_OPEN     = 2, //开操作MORPH_CLOSE    = 3, //闭操作MORPH_GRADIENT = 4, //梯度操作MORPH_TOPHAT   = 5, //顶帽操作MORPH_BLACKHAT = 6, //黑帽操作MORPH_HITMISS  = 7
};

○kernel:用于膨胀操作的结构元素,如果取值为Mat(),那么默认使用一个3 x 3 的方形结构元素,可以使用getStructuringElement()来创建结构元素
○anchor:参考点,其默认值为(-1,-1)说明位于kernel的中心位置。
○borderType :边缘类型,默认为BORDER_CONSTANT。
○borderValue :边缘值,用它的默认值即可。

各种操作的效果

●MORPH_ERODE(腐蚀)
跟erode(腐蚀)函数效果一样
●MORPH_DILATE(膨胀)
跟dilate(膨胀)函数效果一样
●MORPH_OPEN(开)
其实内部就是进行了先腐蚀后膨胀的操作。

源图像

操作后图像


●MORPH_CLOSE(闭)
其实内部就是进行了先膨胀后腐蚀的操作。

源图像

操作后图像


●MORPH_GRADIENT(梯度)
内部是膨胀减去腐蚀

源图像

操作后的图像


●MORPH_TOPHAT(顶帽)

源图像

操作后的图像


●MORPH_BLACKHAT(黑帽)

源图像

操作后的图像

函数使用

●c++中

#include<opencv2/opencv.hpp>
using namespace cv;
int main() {Mat src = imread("C:/Users/Administrator/Desktop/wan.png");//引入源图像if (src.empty()) {return -1;}imshow("src", src);//展示源图像Mat dst;Mat kernel = getStructuringElement(MORPH_RECT,Size(3,3));//创建结构元素大小为3*3morphologyEx(src, dst,MORPH_OPEN, kernel);//开操作imshow("dst", dst);//展示目标图像waitKey(0);return 0;
}

●Android中

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_beauty);//获取源图像Bitmap对象
Mat src = new Mat();
Mat dst = new Mat();
Utils.bitmapToMat(bitmap,src);//Bitmap转换为Mat对象
Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3, 3));//获取结构元素
Imgproc.morphologyEx(src,dst,Imgproc.MORPH_OPEN,kernel);//开操作
Utils.matToBitmap(dst,bitmap);//Mat转换为Bitmap对象
imageView.setImageBitmap(bitmap);

作者:itfitness
链接:https://www.jianshu.com/p/ee72f5215e07
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

morphologyEx 形态学相关推荐

  1. OpenCV最全函数用法

    记录OpenCV中学习的函数用法 文章目录 图像阈值 cv.threshold()全局阈值 cv.adaptiveThreshold()自适应阈值 Otsu's Binarization: 基于直方图 ...

  2. python计算机视觉-- 基于OpenCV的图像分割和图像融合系统

    目录 前言 一.需求分析 二.概要设计 2.1 基本原理 2.2 界面设计 三.详细设计 3.1 系统流程图 3.2 数据集 3.3 代码实现 3.3.1 利用deeplabV3模型分割 3.3.2  ...

  3. 基于python图像处理API

    1.图像处理库 import cv2 as cv from PIL import * 常用的图像处理技术有图像读取,写入,绘图,图像色彩空间转换,图像几何变换,图像形态学,图像梯度,图像边缘检测,图像 ...

  4. 计算机视觉开源库OpenCV形态学morphologyEx函数之开运算和闭运算

    数学形态学操作可以分为二值形态学和灰度形态学,灰度形态学由二值形态学扩展而来.数学形态学有2个基本的运算,即腐蚀和膨胀,而腐蚀和膨胀通过结合又形成了开运算和闭运算. 开运算就是先腐蚀再膨胀 kerne ...

  5. OpenCV形态学变换函数morphologyEx()黑帽运算的使用

    OPenCV版本:4.4 IDE:VS2017 功能描述 简述:执行先进的形态学的变换的黑帽运算. 函数 cv::morphologyEx使用腐蚀和膨胀的作为基本的操作来进行高级的形态学的变换. 任何 ...

  6. OpenCV形态学变换函数morphologyEx()顶帽运算的使用

    OPenCV版本:4.4 IDE:VS2017 功能描述 简述:执行先进的形态学的变换的顶帽运算. 函数 cv::morphologyEx使用腐蚀和膨胀的作为基本的操作来进行高级的形态学的变换. 任何 ...

  7. OpenCV形态学变换函数morphologyEx()梯度运算的使用

    OPenCV版本:4.4 IDE:VS2017 功能描述 简述:执行先进的形态学的变换. 函数 cv::morphologyEx使用腐蚀和膨胀的作为基本的操作来进行高级的形态学的变换. 任何操作都能就 ...

  8. OpenCV形态学变换函数morphologyEx()闭运算的使用

    OPenCV版本:4.4 IDE:VS2017 功能描述 简述:执行先进的形态学的变换. 函数 cv::morphologyEx使用腐蚀和膨胀的作为基本的操作来进行高级的形态学的变换. 任何操作都能就 ...

  9. OpenCV形态学变换函数morphologyEx()开运算的使用

    OPenCV版本:4.4 IDE:VS2017 功能描述 简述:执行先进的形态学的变换. 函数 cv::morphologyEx使用腐蚀和膨胀的作为基本的操作来进行高级的形态学的变换. 任何操作都能就 ...

最新文章

  1. 【mongoDB实战】mongo对某个键添加索引
  2. 美!视差滚动在图片滑块中的应用【附源码下载】
  3. [css] CSS3有哪些新增的特性?
  4. java xml特殊字符转义_Java中将xml文件转化为json遇到特殊字符会报错!
  5. SAP License:SAP Concur是什么?
  6. LeetCode 124. Binary Tree Maximum Path Sum
  7. 蓝桥杯 ADV-131算法提高 选择排序
  8. 默认选中select 第一个option
  9. 信息系统项目管理(二)网络协议、网络存储技术、网络工程、数据仓库和中间件
  10. 主板后置音频接口图解_全程图解:手把手教你主板各种插针接口与机箱的接法_通信数码...
  11. 计算机一级B考试总结500字,第一次月考总结与反思500字
  12. 股票做空机构-浑水公司
  13. ccleaner_创建快捷方式或热键以静默方式运行CCleaner
  14. 提高睡眠质量的东西,睡眠不好一定不要错过这几样东西
  15. 基于牛顿法的开平方实现
  16. mac删除ssh key_好用的mac终端命令仿真工具
  17. Tracer 记录 Controller 日志
  18. 小米手机风筝守护显示服务器异常,风筝守护只能小米用吗
  19. 某徒步旅游网站python爬虫小练习
  20. mysql进阶(三十四)Field ‘id‘ doesn‘t have a default value 错误解决方法

热门文章

  1. linux下查找文件及内容 grep
  2. 网页布局(div布局)
  3. ubuntu 安装VmTool
  4. 编译时遇到如下错误error C2061: syntax error : identifier 'THIS_FILE'
  5. 二叉查找树(二叉排序树)的详细实现
  6. cmos 和 bios中断大全
  7. Design Pattern Strategy C
  8. C# - 在foreach中删除元素
  9. 数据结构 - 有两个链表,第一个升序,第二个降序,合并为一个升序链表(C++)
  10. 服务器如何安装虚拟声卡,虚拟声卡如何运作起来 分享介绍虚拟声卡安装使用方法...