【OpenCv 4 Python 3.7】图像形态学操作之顶帽、黑帽、形态学梯度

opencv学习笔记(二十)——形态学滤波 开运算处理过程:先腐蚀后膨胀。 功能:用于消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积,同时抑制比结构元小的亮细节。 使用实例:#include<opencv2/opencv.hpp> void main() { cv::Mat image = cv::imread("腐蚀膨胀练习1.jpg"); cv::namedWindow("SourceIm 阅读详情

1、 顶帽

是原图像与开操作之间的差值图像
开操作先腐蚀后膨胀,开操作之后就只剩下白色的矩形,原图减去矩形就是下面的。。
在这里插入图片描述

2、黑帽

是闭操作图像与源图像的差值图像

在这里插入图片描述

3、形态学梯度

 基本梯度 基本梯度是用膨胀后的图像减去腐蚀后的图像得到差值
图像,称为梯度图像也是opencv中支持的计算形态学 梯度的方法,而此方法得到梯度有被称为基本梯度。

 内部梯度 是用原图像减去腐蚀之后的图像得到差值图像,称为图 像的内部梯度

 外部梯度 图像膨胀之后再减去原来的图像得到的差值图像,称为 图像的外部梯度

代码实现:

 import cv2 as cv
import numpy as np

#顶帽 黑帽:用灰度图像
def hat_gray_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#灰度图像
    #结构元素
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
    #形态学操作:MORPH_TOPHAT黑帽   cv.MORPH_TOPHAT:顶帽
    dst = cv.morphologyEx(gray, cv.MORPH_TOPHAT, kernel)
    #cimage 和 gray的大小相同
    cimage = np.array(gray.shape, np.uint8)
    cimage = 120;
    #提高亮度
    dst = cv.add(dst, cimage)
    cv.imshow("tophat", dst)

#顶帽 黑帽:用二值图像
def hat_binary_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
    dst = cv.morphologyEx(binary, cv.MORPH_BLACKHAT, kernel)
    cv.imshow("tophat", dst)


def gradient_binary_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
    #MORPH_GRADIENT:梯度
    dst = cv.morphologyEx(binary, cv.MORPH_GRADIENT, kernel)
    cv.imshow("tophat", dst)


def gradient2_demo(image):
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
    dm = cv.dilate(image, kernel)
    em = cv.erode(image, kernel)
    #原图像减去腐蚀的
    dst1 = cv.subtract(image, em) # internal gradient:内部梯度
    #膨胀的减去原图
    dst2 = cv.subtract(dm, image) # external gradient:外部梯度
    cv.imshow("internal", dst1)
    cv.imshow("external", dst2)


print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("E:/ji_qi_xue_xi/opencv_kejian/opencv_python_image/test.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
gradient2_demo(src)
cv.waitKey(0)

cv.destroyAllWindows()

gradient2_demo 结果:

在这里插入图片描述

函数补充说明

open_binary=cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)
close_binary=cv.morphologyEx(binary,cv.MORPH_CLOSE,kernel)

1
函数参数:

第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。图像位深应该为以下五种之一:CV_8U,CV_16U,CV_16S, CV_32F 或CV_64F。

第二个参数,OutputArray类型的dst,即目标图像,函数的输出参数,需要和源图片有一样的尺寸和类型。

第三个参数,int类型的op,表示形态学运算的类型,可以是如下之一的标识符:
MORPH_OPEN – 开运算(Opening operation)
MORPH_CLOSE – 闭运算(Closing operation)
MORPH_GRADIENT -形态学梯度(Morphological gradient)
MORPH_TOPHAT - “顶帽”(“Top hat”)
MORPH_BLACKHAT - “黑帽”(“Black hat“)

第四个参数,InputArray类型的kernel,形态学运算的内核。若为NULL时,表示的是使用参考点位于中心3x3的核。我们一般使用函数 getStructuringElement配合这个参数的使用。getStructuringElement函数会返回指定形状和尺寸的结构元素(内核矩阵)。

第五个参数,Point类型的anchor,锚的位置,其有默认值(-1,-1),表示锚位于中心。
第六个参数,int类型的iterations,迭代使用函数的次数,默认值为1。

第七个参数,int类型的borderType,用于推断图像外部像素的某种边界模式。注意它有默认值BORDER_ CONSTANT。

第八个参数,const Scalar&类型的borderValue,当边界为常数时的边界值,有默认值morphologyDefaultBorderValue(),一般我们不用去管他。需要用到它时,可以看官方文档中的createMorphologyFilter()函数得到更详细的解释。

opencv-python 形态学之开闭运算、形态学梯度、图像顶帽和黑帽运算 opencv-python 形态学之开闭运算、形态学梯度、图像顶帽和黑帽运算 形态学的高级形态,建立在腐蚀和膨胀这两个基本操作之上 一. 图像开运算 图像开运算是图像依次经过腐蚀、膨胀处理后的过程。 开运算主要使用的函数morphologyEx,它是形态学扩展的一组函数,其参数cv2.MORPH_OPEN对应开运算。其原型如下: dst = cv2.morphologyEx(src, cv2... 阅读详情

相关推荐

OpenCV库中的开运算,闭运算,顶帽,黑帽,梯度

在图像处理和计算机视觉领域,形态学运算是一类重要的工具,用于分析和处理图像的结构和形态特征,而说起来开运算,闭运算等就不得不说图像处理中的腐蚀和膨胀(在别的篇幅里)而开闭运算则是在腐蚀和膨胀的基础上对图像进行处理。而顶帽与黑帽则是在这基础上更上级的操作。

2301_77444219的博客 1338

梯度运算MORPH_GRADIENT

梯度是指图像梯度,可以简单地理解为像素的变化程度。如果⼏个连续的像素,其像素值跨度越⼤,则梯度值越⼤。梯度运算的运算过程:让原图的膨胀图减原图的腐蚀图。因为膨胀图⽐原图⼤,腐蚀图⽐原图⼩,利⽤腐蚀图将膨胀图掏空,就得到了原图的轮廓图。梯度运算的参数为cv2.MORPH_GRADIENT。

u013122534的博客 343

[Python图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽运算

前面的第十篇文章讲解过图形形态学变换——顶帽运算和黑帽运算,本篇文章继续深入,结合灰度三维图像讲解图像顶帽运算和图像黑猫运算,通过Python调用OpenCV函数实。基础性知识希望对您有所帮助。 1.图像顶帽运算 2.图像黑帽运算 3.基于灰度三维图的顶帽黑帽运算

杨秀璋的专栏 1万+

OpenCV-形态学梯度(GRADIENT)

形态学梯度:膨胀减腐蚀

翟天保的博客 1万+

Flotherm XT新手必看:5分钟搞定自然对流热仿真(附案例文件)

本文为Flotherm XT新手提供了自然对流热仿真的快速入门指南,通过详细的步骤解析和实用技巧,帮助用户在5分钟内完成从建模到后处理的全流程。重点介绍了环境设置、几何建模、材料属性、网格划分等关键环节,并附有案例文件供参考学习,助力工程师快速掌握热仿真技术。

weixin_30839881的博客 631

主流算力卡性能对比分析

超大规模AI训练/HPC:优先选择NVIDIA H100或AMD MI300X,需关注显存带宽和多卡互联能力。企业级AI训练:NVIDIA A100性价比更高,生态成熟。国内自主可控需求:华为昇腾910B是首选,支持液冷和低功耗设计。本地AI推理/游戏:NVIDIA RTX 4090或RTX 5090性价比突出,但需注意显存容量限制。边缘计算/低功耗场景:华为昇腾310或清微智能TX536(能效比6.3TOPS/W@INT8)更合适。

m0_69867914的博客 7807

opencv基础 39 -形态学梯度运算(膨胀图像减腐蚀图像) cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

形态学梯度运算是用图像的膨胀图像减腐蚀图像的操作,该操作可以获取原始图像中前景图像的边缘。

小海聊智造 665

ZED2双目相机运行VINS-FUSION初试

基于ZED2运行VINS-MONO的经验,在运行VINS-FUSION前有几点tips想跟大家分享,应该能在运行的过程中避免一些踩坑吧。 TIPs 1)关于zed2标定 开始使用Kalibr进行相机单目/双目及联合标定,虽然重投影误差最高也就5个像素,但实际使用效果却并不好,故建议大家相机内参还是从ZED2相机发布出的topic获取或可尝试/usr/local/zed/settings文件下的参数文档 另,启动ZED2.launch的时候,会有一个相机(一般是左目)和IMU的轴系转换关系Camera-IMU

xiaojinger_123的博客 5357

《opencv学习笔记》-- 形态学滤波:形态学梯度、开运算、闭运算、顶帽、黑帽

形态学滤波:形态学梯度、开运算、闭运算、顶帽、黑帽

ccr的博客 930

matlab相机标定_实战 | 相机标定

点击“计算机视觉life”关注,置顶更快接收消息!本文阅读时间约5分钟什么是相机标定?我们为什么需要相机标定?相机标定就是确定相机内参和外参的过程,其结果精度会直接影响视觉系统后续工作的准确性。坐标系相机标定涉及到了四大坐标系,分别为:像素坐标系图像物理坐标系相机坐标系世界坐标系为了进行相机标定,必须已知世界坐标系中足够多的三维空间点坐标,找到这些空间点在图像中投影点的二维图像坐标,并建...

weixin_39747334的博客 765

PLSQL 14.0.6 下载使用教程

众所周知,PLSQL 只是一个oracle第三方开发测试工具,它依赖oracle 客户端搭配使用,但是oracle 客户端有2G,相当庞大,不建议安装。所以我们如果下载安装好PLSQL,再下载好轻量级的支持远程链接的oracle客户端,这样搭配使用可以的话就最好了,答案是可以的。 第一步: PLSQL 下载与安装 PLSQL 14.0.6 下载地址 : https://www.allroundautomations.com/registered-plsqldev/ 下载下来,除了安装路径更改一下,

qq976511508的博客 2135

Open_CV形态学运算专题 (腐蚀&膨胀、开&闭运算、梯度运算、顶帽运算黑帽运算 )【Python-Open_CV系列(十)】

Open_CV形态学运算专题 (以Python为工具) Open_CV系列(十)(腐蚀&膨胀、开&闭运算、梯度运算、顶帽运算黑帽运算 )文章目录 1. 腐蚀 & 膨胀 1.1什么是腐蚀&膨胀 1.2 腐蚀方法 cv2.erode() 1.3 膨胀方法 cv2.dilate() 2. 开运算 & 闭运算 2.1 简述 2.2 开运算 2.3 闭运算 3. morphologyEx()方法 3.1 morphologyEx()方法 介绍 3.2 梯度运算 3.3 顶帽运算 3.4 黑帽运算

侯小啾技术博客 4841

【open judge】【程设】魔兽世界三开战!

#程设 魔兽世界三---开战!--------原以为会很容易ac,没想到写了好久,看来自己的水平还是亟待提高啊!有几个比较有趣的点:1. typeid(#include&lt;typeinfo&gt;)还是比较好用的,特别是本题当战士为wolf,iceman, dragon, ninja时有特殊技能,那么用typeid判断一下就很方便了。2. 对于这种输出很复杂的问题,往往通过使用文件的输入输出再...

weixin_40841416的博客 6073

OpenCV+python:顶帽、黑帽、形态学梯度

1,顶帽 2,黑帽 3,形态学梯度 4,源代码示例 import cv2 as cv import numpy as np def hat_gray_demo(image): #基于灰度图像的顶帽操作 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) kernel = cv.getStructuringElement(cv.MORPH_R...

qq_43660987的博客 1681

睿抗机器人魔力元宝在完成任务过程中如何使机械臂先到达白色盒子上方而不是先到达工作台?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1379

ROS2 - 乐动激光雷达 LD06

STL-06P 主要由激光测距核心,无线传电单元,无线通讯单元,角度测量单元、电机驱动单元和机械外壳组成。STL-06P 测距核心采用 DTOF 技术,可进行每秒 5000 次的测距。每次测距时,雷达发射出红外激光,激光遇到目标物体后被反射到单光子接收单元。

机器人控制与仿真应用 3492

OpenCV(图像处理)-基于Python-形态学处理-开运算、闭运算、顶帽、黑帽运算

形态学处理-顶帽、黑帽、开运算、闭运算、梯度运算、腐蚀与膨胀

羊羊羊 4341

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

形态学上的图像顶帽运算和黑帽运算是什么?

作者 |杨秀璋责编 | 夕颜出品 | 优快云博客数学形态学(Mathematical morphology)是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本...

优快云资讯 5615

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OpenCV 形态学操作之腐蚀与膨胀,开运算与闭运算,顶帽与黑帽,图像梯度运算相关知识点回顾

OpenCV 形态学操作之腐蚀与膨胀,开运算与闭运算,顶帽与黑帽,图像梯度运算

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【OpenCV-Python】:形态学操作之形态学梯度+顶帽运算与黑帽运算

什么是形态学梯度 形态学梯度能描述图像亮度变化的剧烈程度,我们可以使用形态学梯度突出物体边缘。 常见的几种梯度: - 基本梯度:膨胀后的图像减腐蚀后的图像; - 内部梯度:原图减腐蚀后的图像; - 外部梯度:膨胀后的图像减原图; - 方向梯度:使用X方向与Y方向的直线作为结构元素之后得到的图像梯度。 我们常说的形态学梯度一般指基本梯度。

王乐予的博客 1537

《OpenCv视觉之眼》Python图像处理十一 :Opencv图像形态学处理之顶帽运算与黑帽运算

本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的、不同方法的处理,以达到对图像进行去噪、锐化等一系列的操作。同时,希望观看本专栏的小伙伴可以理解到OpenCv进行图像处理的强大哦,如有转载,请注明出处(原文链接和作者署名),感谢各位小伙伴啦! 前文参考: 《OpenCv视觉之眼》Python图像处理一 :Opencv-python的简介及Python环境搭建 《OpenCv视觉之眼》Python图像

qq_42451251的博客 1865

OpenCV for Python之图像的开闭操作、顶帽黑帽、形态学梯度

OpenCV for Python之图像的开闭操作1 开闭操作2 顶帽 黑帽3 形态学梯度 Opencv4官方文档:https://docs.opencv.org/2.4.4-beta/ Opencv4 for Python中文文档点击下载:OpenCV4 for Python 中文文档 1 开闭操作 开运算:先腐蚀再膨胀.就叫做开运算,它被用来去除噪声。 闭运算:先膨胀再腐蚀。它经常被用来填充前景物体中的小洞,或者前景物体上的小黑点。 api: cv.morphologyEx(src, op, ker

郑德帅 682

Opencv——顶帽和黑帽运算

顶帽和黑帽运算都是形态学运算,分别用于图像处理中的特定应用。顶帽运算被定义为原始图像与进行开运算之后得到的图像的差。它常用于分离比邻近点亮的斑块,可以突显出比原图轮廓周围的区域更明亮的区域。在进行背景提取时,顶帽运算也常被用于分离图像中的微小细节。黑帽运算则是图像闭运算结果与原始图像之差。它通常用于分离比邻近点暗一些的斑块,可以突出比原始图轮廓周围区域更暗的区域。即顶帽 = 原始图像 - 开运算结果(先腐蚀后膨胀)黑帽 = 闭运算(先膨胀后腐蚀) - 原始图像开运算并运算详细点击。

AI_dataloads的博客 2312

Python-OpenCV 图像处理(二十四):图像形态学(顶帽、黑帽、形态学梯度)

顶帽(Top Hat): 原图像与开运算图的区别(差值),突出原图像中比周围亮的区域 黑帽(Black Hat): 闭操作图像- 原图像,突出原图像中比周围暗的区域 形态学梯度(Gradient): 基础梯度:基础梯度是用膨胀后的图像减去腐蚀后的图像得到差值图像,称为梯度图像也是opencv中支持的计算形态学梯度的方法,而此方法得到梯度有称为基本梯度。 内部梯度:是用原图像减去腐蚀之...

zx_good_night的博客 1024

OpenCV图像处理——形态学操作原理与代码实现(C++/Python)

形态学操作(Morphological Operations)是图像处理中的一类重要操作,主要用于处理图像的形状特征,尤其是二值图像中的边界、连通区域、空洞、噪声等结构。形态学操作基于结构元素对图像进行操作,通常用于预处理和后处理,如去噪、提取边缘、分割物体等。

小拉拉的博客 2495

20. 图像的形态学操作-腐蚀、膨胀、开运算、闭运算、顶帽和黑帽、形态学梯度

1. 形态学操作 形态学操作其实就是改变物体的形状,比如腐蚀就是”变瘦”,膨胀就是”变胖”。 形态学操作一般作用于二值图,来连接相邻的元素或分离成独立的元素。 2. 图像的腐蚀和膨胀 2.1 腐蚀(erode)-cv2.erode() 腐蚀和膨胀是相反的操作,腐蚀是求局部最小值的操作。腐蚀操作会使图像中的高亮区逐渐减小。 原图 ...

sckobe的博客 1682
上一篇: 【OpenCv 4 Python 3.7】图像形态学操作之开闭操作
下一篇: 【OpenCv 4 Python 3.7】分水岭算法
YL_python_C++_java
博客等级 码龄7年 1392粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值