OpenCV形态学运算中梯度运算、顶帽、黑帽运算讲解与实战应用(附Python源码)

简介: OpenCV形态学运算中梯度运算、顶帽、黑帽运算讲解与实战应用(附Python源码)

需要源码和图片请点赞关注收藏后评论区留言私信~~~

腐蚀和膨胀是形态学运算的基础操作,除了开运算和闭运算以外,形态学中还有几种比较有特点的运算,OpenCV提供了一个morphologyEx方法,包含所有常用的运算 语法如下

dst=cv2.morphologyEx(src,op,kernel,anchor,iterations,borderType,borderValue)

src 原始图像

op 操作类型 具体值如下表

kernel 操作过程中使用的核

anchor 核的锚点位置

形态学函数的操作类型参数

一、梯度运算

这里的梯度是指图像梯度,可以简单理解为像素的变化程度,如果几个连续的像素,其像素值跨度越大,则梯度值越大

梯度运算的运算过程如下图所示,让原图的膨胀图减原图的腐蚀图,因为膨胀图比原图大,腐蚀图比原图小,利用腐蚀图将膨胀图掏空,就得到了原图的轮廓图

下面通过代码实现这个效果

部分代码如下

import cv2
import numpy as np
img = cv2.imrespider.png")  # 读取原图
k = np.ones((5,5), np.uint8)  # 创建5*5的数组作为核
cv2.imshow("imgimg)  # 显示原图
dst = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, k) # 进行梯度运算
cv2.imshow("dst", ds 显示梯度运算结果
cv2.waitKey()  # 按下任何键盘按键后
cv2.destroyAllWindows()  # 释放所有窗体

二、顶帽运算

顶帽运算的运算过程如下图所示,让原图减原图的开运算图,因为开运算抹除图像的外部细节,有外部细节的图像减去无外部细节的图像,得到的结果就只剩外部细节了,所以经过顶帽运算之后,小蜘蛛就只剩蜘蛛腿了

部分代码如下

import cv2
import numpy as np
img = cv2("spider.png")  # 读取原图
k = np.on((5, 5), np.uint8)  # 创建5*5的数组作为核
cv2.imshow("img", img)  # 显示原图
dst = cvmorphologyEx(img, cv2.MORPH_TOPHAT, k)  # 进行顶帽运算
cv2.imshow("t", dst)  # 显示顶帽运算结果
cv2.waitKey()  # 按下任何键盘按键后
cv2.destroyAllWind()  # 释放所有窗体

三、黑帽运算

黑猫运算的运算过程如下图所示,让原图的闭运算图减去原图,因为闭运算抹除图像的内部细节,无内部细节的图像减去有内部细节的图像,得到的结果就只剩内部细节了,所以经过黑帽运算之后,小蜘蛛就只剩下斑点、花纹和眼睛了

部分代码如下

import cv2
import numpy as np
img = cv2.imread("spider2.png")  # 读取原图
k = np.es((5, 5), np.uint8)  # 创建5*5的数组作为核
cv2.imsow("img", img)  # 显示原图
dst = c.(img, cv2.MORPH_BLACKHAT, k)  # 进行黑帽运算
cv2.imsh"dst", dst)  # 显示黑帽运算结果
cv2.waiey() 按下任何键盘按键后
cv2.destroyAllWindows()  # 释放所有窗体

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
机器学习/深度学习 监控 算法
基于计算机视觉(opencv)的运动计数(运动辅助)系统-源码+注释+报告
基于计算机视觉(opencv)的运动计数(运动辅助)系统-源码+注释+报告
373 3
|
7月前
|
机器学习/深度学习 算法 Java
OpenCV的理解及其应用
以上只是OpenCV的冰山一角,它的功能远不止这些。如果你对计算机视觉有兴趣,我强烈推荐你去尝试使用OpenCV,相信你会在使用过程中发现更多的有趣和实用的功能。
223 8
|
9月前
|
机器学习/深度学习 IDE 开发工具
基于OpenCV的车牌识别系统源码分享
基于OpenCV的车牌识别系统主要利用图像边缘和车牌颜色定位车牌,再利用OpenCV的SVM识别具体字符,从而达到车牌识别的效果。
382 4
基于OpenCV的车牌识别系统源码分享
|
10月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
300 43
|
10月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
256 30
|
10月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
147 12
|
缓存 并行计算 Ubuntu
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
本文是关于在Jetson AGX Xavier上编译FFmpeg(3.4.1)和OpenCV(3.4.0)的详细教程,包括编译需求、步骤、测试和可能遇到的问题及其解决方案。还提供了Jetson AGX Xavier编译CUDA版本的OpenCV 4.5.0的相关信息。
437 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
842 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
187 4
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
202 2

推荐镜像

更多