形态学有四个基本操作:腐蚀、膨胀、开、闭。

opencv笔记(十七)——形态学操作(膨胀、腐蚀、开、闭操作)_马大哈先生的博客-CSDN博客一、设置结构元素:getStructuringElement  图像处理经常要用到形态学操作,其中首先要获取结构元素。包括结构元素的大小及形状。    OpenCV提供了一个函数getStructuringElement,可以获取常用的结构元素的形状:矩形(包括线形)、椭圆(包括圆形)及十字形。 C++:Mat getStructuringElement(int shape, Size...https://blog.csdn.net/qq_37764129/article/details/81983833

十九、图像的形态学操作_beyond谚语的博客-CSDN博客_图像形态学一、图像形态学图像形态学是图像处理学科的一个单独分支学科主要针对的是灰度图和二值图像是由数学的集合论以及数学中的拓扑几何原理发展而来二、膨胀操作(dilate)3×3的卷积核以3×3为卷积核从左往右(从上往下)开始运行,若这卷积核内存在1,则用1替代中心元素。最大值取代中心像素白变多,黑变少膨胀的作用:对象大小增加一个像素(3×3)平滑对象边缘减少或者填充对象之间的距离二值图import cv2 as cvimport numpy as npdef dilate(ihttps://beyondyanyu.blog.csdn.net/article/details/123976473?spm=1001.2101.3001.6650.10&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-10-123976473-blog-80001590.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-10-123976473-blog-80001590.pc_relevant_aa&utm_relevant_index=11

腐蚀与膨胀

#include <opencv2/opencv.hpp>//引入头文件
#include <iostream>//内存io
#include <math.h>//计算库
#include<opencv2/highgui/highgui_c.h>
using namespace cv;//命名空间 不用每个函数都加cv::了
Mat src,dst;//矩阵化源图像和目标图像,主要用于指针像素的前缀
char OUTPUT_WIN[] = "output image";
int element_size = 3;
int max_size = 21;//规定滑条的数据从3-21
void CallBack_Demo(int, void*);//滑条中呼应起的膨胀或腐蚀函数
int main(int argc, char** argv){src = imread("D:\\桌面\\code\\opencvlearn\\配套代码\\课程配套代码与图片5\\代码与图片\\cvtest.png");//提取if (!src.data) {printf("could not find image...\n");//无图片产出return -1;}namedWindow("input image", WINDOW_AUTOSIZE);imshow("input image", src);namedWindow("OUTPUT_WIN", WINDOW_AUTOSIZE);createTrackbar("Element Size:",OUTPUT_WIN, &element_size, max_size, CallBack_Demo);//要用7-20的这种窗口创建模式才能够使用(“滑条名称”,窗口名,&最小元素,最大元素,函数)CallBack_Demo(0, 0);//调用函数waitKey(0);//按任意键退出return 0;
}
void CallBack_Demo(int, void*) {int s = element_size * 2 + 1;//结构元素B中的Size()大小为 2n+1Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));//结构元素矩阵(形状,大小,Point(-1,-1)默认为中心点dilate(src, dst, structureElement,Point(-1,-1),1);//膨胀(源,目标,掩膜/结构元素) 腐蚀erode(src,dst,kernel)imshow("OUTPUT_WIN", dst);//注意7-20-31行这个窗口的处理分成了三句分散在代码之中
}

如图本代码遇到了此问题目前未解决。参考:

R6010 -abort() has been called错误分析及其解决方法_奈何小洪的博客-CSDN博客_abort()has been calledhttps://blog.csdn.net/qingzai_/article/details/44244595
将图像的膨胀和腐蚀相结合产生了如下的功效

开、闭、梯度、顶帽、黑帽

这里是形态学操作的总API

开操作

代码如下:

#include<opencv2/opencv.hpp>
#include<iostream>
#include<math.h>
#include<opencv2/highgui/highgui_c.h>using namespace cv;
int main(int argc, char** argv) {Mat src, dst;src = imread("D:/桌面/code/opencvlearn/配套代码/课程配套代码与图片5/代码与图片/pill_002.png");if (!src.data) {printf("could not load image...\n");}namedWindow("input image", CV_WINDOW_AUTOSIZE);imshow("input image", src);namedWindow("morphology demo", CV_WINDOW_AUTOSIZE);Mat kernel = getStructuringElement(MORPH_RECT, Size(11,11), Point(-1, -1));morphologyEx(src, dst, CV_MOP_OPEN, kernel);imshow("morphology demo", dst);waitKey(0);return 0;
}

闭操作

代码方面只需要将CV_MOP_OPEN置换为CV_MOP_CLOSE即可

形态学梯度

图像腐蚀后图像整体就会缩小,而膨胀就会扩大,用膨胀后的图像减去源图像或腐蚀后的图像,或者用源图像减去腐蚀后的图像,都会去除图像前景色中间的部分得到一个图像的轮廓,这些减法运算就是形态学梯度运算。

原图像膨胀后的图像和腐蚀后图像间的差值图像叫做形态学基本梯度。
膨胀后的图像和原图像间的差值图像叫做形态学外部梯度。
原图像和腐蚀后图像间的差值图像叫做形态学内部梯度。

当kernel核矩阵为全1的行向量时,得到的梯度图称为X方向的梯度图;
当kernel核矩阵为全1的列向量时,得到的梯度图称为Y方向的梯度图。
————————————————
版权声明:本文为CSDN博主「昊虹图像算法」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wenhao_ir/article/details/12481276

置换为CV_MOP_GRADIENT即可

效果如下:

顶帽

置换为CV_MOP_TOPHAT即可,代码效果如下图所示:

黑帽

置换为CV_MOP_BLACKHAT即可,其效果如下图所示:

图像处理-形态学操作相关推荐

  1. 数字图像处理——形态学操作(二值图像篇)

    形态学操作 内容简介 1. 预备知识--结构元 2. 形态学基本操作 2.1 腐蚀和膨胀 2.2 开操作与闭操作 2.3 击中和击不中变换(hit and miss transform) 3. 基本的 ...

  2. OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 通俗的说 ...

  3. opencv6.1-imgproc图像处理模块之平滑与形态学操作

    这个部分是<opencv-tutorials.pdf>的部分,这部分也是几大部分中例子最多的,其实这个教程的例子都很不错,不过有些看得出来还是c接口的例子,说明例子有些年头了,其实在&qu ...

  4. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  5. OpenCV图像处理(2)——形态学操作

    形态学操作 Mat element = getStructuringElement(MORPH_RECT, Size(9, 9)); morphologyEx(InputImage, OutputIm ...

  6. 简单的图像处理——2. 图像的形态学操作:开运算与闭运算

    1. 回顾 在 简单的图像处理--1. 图像的形态学操作:膨胀与腐蚀 中,我们介绍了图像基本的形态学操作--膨胀与腐蚀,同时也利用了Python进行了实现.在这里我们将接着上次的内容,接着描述其它的一 ...

  7. OpenCV图像处理-区域分割-形态学操作应用

    分割的结果中通常包含不想要的干扰,如我们感兴趣的物体被干扰了,如由于反射对分割结果造成的干扰,这时,形态学操作提供了特别有用的方法,让我们调整和描述物体的形状.       本文聚焦形态学操作的若干典 ...

  8. 【python OpenCV3.3 图像处理教程:直线检测、圆检测、对象测量、腐蚀、膨胀等形态学操作、数字验证码识别、人脸检测

    1. 直线检测 Hough Line Transform:前提:边缘检测已经完成,基于霍夫变换 1.1 原理 可以通过(theta,r)唯一表示一个点. 把过三个点的全部直线以某一角度全部计算出来,如 ...

  9. 使用Python,OpenCV进行形态学操作

    使用Python,OpenCV进行形态学操作) 1. 效果图 2. 原理 3. 源码 3.1 [制作logo源码](https://blog.csdn.net/qq_40985985/article/ ...

最新文章

  1. hashmap是线程安全的吗?怎么解决?_解决SimpleDateFormat线程安全问题
  2. Ubuntu下如何禁用IPv6
  3. N皇后的问题——算法的思想:回溯和剪枝
  4. PAT甲级1125 Chain the Ropes:[C++题解]贪心、优先队列、合并果子
  5. Python.exe下载太慢怎么办?
  6. 魔术方法php,PHP中常用的魔术方法
  7. java final static
  8. HDU 1286 找新朋友 (欧拉函数)
  9. 多个非空文件整合至一个文件
  10. HDU2089 不要62【数位DP+记忆化搜索】
  11. 【转】Swig 使用指南
  12. 评说SAP Business ByDesign
  13. ZUL页面注解语法与Java注解语法
  14. 荣耀20android版本10什么意思,荣耀10和荣耀10青春版的区别 差价800荣耀10与青春版哪个好? (全文)...
  15. windows硬盘读写速度测试
  16. python安装失败0x80070005_win10下载安装软件时提示“0x80070005-拒绝访问”
  17. Big Endian与Little Endian区别
  18. php 英文小写转大写数字,php 英文字符大小写转换函数
  19. bzoj3384[Usaco2004 Nov]Apple Catching 接苹果*bzoj1750[Usaco2005 qua]Apple Catching*
  20. iphone计算机怎么显示电话,苹果手机最近通话记录不显示怎么恢复

热门文章

  1. 创新实训项目分析——第十三篇
  2. PaddlePaddle入门03:使用Fluid进行单机训练
  3. 日本成本企划的现状及未来
  4. php提交数据 get 提交数据 查询数据 返回给浏览器查询到的数据
  5. 墨卡托投影参数设置_墨卡托投影(Mercator)
  6. 上传文件到Github
  7. 自己写的古剑奇谭3D宣传画(哈哈)
  8. 【MySQL】MySQL中的逻辑运算符,位运算符和运算符的优先级
  9. 广工物理实验报告-用拉伸法测量杨氏模量
  10. [技能大赛-中职组-网络搭建与应用]2022江苏赛题答案-CA 证书服务--3