欢迎来到
银狐的个人博客

Python 计算机视觉(十一)—— OpenCV 图像形态学处理

参考的一些文章以及论文我都会给大家分享出来 —— 链接就贴在原文,论文我上传到资源中去,大家可以免费下载学习,如果当天资源区找不到论文,那就等等,可能正在审核,审核完后就可以下载了。大家一起学习,一起进步!加油!!

目录

前言

(1)基本概念

(2)读取图像信息

1. 图像腐蚀

(1)基本概念

(2)代码实现

2. 图像膨胀

(1)基本概念

(2)代码实现

Python 计算机视觉(十一)—— OpenCV 图像形态学处理 第1张图片-银狐博客

3. 图像开运算

(1)基本概念

(2)代码实现

4. 图像闭运算

(1)基本概念

(2)代码实现

5. 图像梯度运算

(1)基本概念

(2)代码实现

6. 图像顶帽运算

(1)基本概念

(2)代码实现

7. 图像底帽运算

(1)基本概念

(2)代码实现

结束语


前言 (1)基本概念

此处参考:图像处理中常见的形态学方法

       形态学图像处理(简称形态学)是指一系列处理图像形状特征的图像处理技术,其基本思想是利用一些特殊的结构元来测量或提取图像中相应的形状和特征,以便进一步进行图像分析和处理。

(2)读取图像信息

"""Author:XiaoMadate:2021/11/2"""import cv2import numpy as npimg0 = cv2.imread("E:\\From Zhihu\\For the desk\\cveleven.jpg")img1 = cv2.resize(img0, dsize = None, fx = 0.5, fy = 0.5)img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)h, w = img1.shape[:2]print(h, w)cv2.namedWindow("W0")cv2.imshow("W0", img1)cv2.waitKey(delay = 0)cv2.namedWindow("W1")cv2.imshow("W1", img2)cv2.waitKey(delay = 0)

经典操作,不必多说了,得到的图像信息如下:

 

 350 560

       除了读取图像信息,我们还需要将图像改为二值图像,因为图像形态学一般是对二值图像进行处理分析的。此处可以参考:图像阈值处理 

#图像二值化ret, img3 = cv2.threshold(img2, 135, 255, cv2.THRESH_BINARY)cv2.namedWindow("W2")cv2.imshow("W2", img3)

  

1. 图像腐蚀 (1)基本概念

       前面我们将图像转化为二值图像,则显示的图像只有黑白两种区别,图像腐蚀操作就是扩大图像中的黑色部分,使得图像中的白色减少,即白色部分被腐蚀。

Python 计算机视觉(十一)—— OpenCV 图像形态学处理 第2张图片-银狐博客 (2)代码实现

此处参考:OpenCV 官网

k = np.ones((5, 5), np.uint8) #创建内核#腐蚀img4 = cv2.erode(img3, k, iterations = 1)cv2.namedWindow("W3")cv2.imshow("W3", img4)cv2.waitKey(delay = 0)

 

2. 图像膨胀 (1)基本概念

       膨胀是和腐蚀相对的一种概念,所以腐蚀减少了二值图像中的白色部分,那么膨胀肯定就是扩大了图像中的白色部分。

(2)代码实现

#膨胀img5 = cv2.dilate(img3, k, iterations = 1)cv2.namedWindow("W4")cv2.imshow("W4", img5)cv2.waitKey(delay = 0)

  

3. 图像开运算 (1)基本概念

         开,按照字面意思就是打开嘛,所以对于图像的先腐蚀,后膨胀操作就是图像的开运算了。

(2)代码实现

#开运算img6 = cv2.morphologyEx(img3, cv2.MORPH_OPEN, k)cv2.namedWindow("W5")cv2.imshow("W5", img6)cv2.waitKey(delay = 0)

  

4. 图像闭运算 (1)基本概念

         对图像的先膨胀,后腐蚀操作

(2)代码实现

#闭运算img7 = cv2.morphologyEx(img3, cv2.MORPH_CLOSE, k)cv2.namedWindow("W6")cv2.imshow("W6", img7)cv2.waitKey(delay = 0)

  

5. 图像梯度运算 (1)基本概念

         通过图像梯度运算,显示了图像腐蚀和膨胀之间的部分,类似于勾勒出了一个轮廓。

(2)代码实现

#梯度运算img8 = cv2.morphologyEx(img3, cv2.MORPH_GRADIENT, k)cv2.namedWindow("W7")cv2.imshow("W7", img8)cv2.waitKey(delay = 0)

 

6. 图像顶帽运算 (1)基本概念

         通过图像顶帽运算,显示的是原图像与开运算得到的图像之间的区别。

(2)代码实现

#顶帽运算img9 = cv2.morphologyEx(img3, cv2.MORPH_TOPHAT, k)cv2.namedWindow("W8")cv2.imshow("W8", img9)cv2.waitKey(delay = 0)

 

7. 图像底帽运算 (1)基本概念

         通过图像底帽运算,显示的是原图像与闭运算得到的图像之间的区别。

(2)代码实现

#底帽运算img10 = cv2.morphologyEx(img3, cv2.MORPH_BLACKHAT, k)cv2.namedWindow("W9")cv2.imshow("W9", img10)cv2.waitKey(delay = 0)

 

结束语

       这篇文章主要介绍了图像形态学处理中的一些基本操作方法,包括图像的腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算以及底帽运算这几部分,参考的文章链接都粘贴在了原文中,需要加强学习、深入了解的小伙伴可以点进去查看。图像形态学处理的主要目的是得到图像的形状信息,一般在一些研究动植物行为状态等领域使用的较广,大家感兴趣可以多了解,多学习,加油!

赞(0) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Python 计算机视觉(十一)—— OpenCV 图像形态学处理》
文章链接:https://www.yinhu3.com/1670.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
如果文章侵犯到你的权益,请查看本站免责声明:《免责声明》

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

愿意请我喝杯矿泉水吗

支付宝扫一扫打赏