Python 计算机视觉(十一)—— OpenCV 图像形态学处理
參考的一些文章以及論文我都會給大家分享出來 —— 鏈接就貼在原文,論文我上傳到資源中去,大家可以免費下載學習,如果當天資源區找不到論文,那就等等,可能正在審核,審核完后就可以下載了。大家一起學習,一起進步!加油!!
目錄
前言
(1)基本概念
(2)讀取圖像信息
1. 圖像腐蝕
(1)基本概念
(2)代碼實現
2. 圖像膨脹
(1)基本概念
(2)代碼實現
3. 圖像開運算
(1)基本概念
(2)代碼實現
4. 圖像閉運算
(1)基本概念
(2)代碼實現
5. 圖像梯度運算
(1)基本概念
(2)代碼實現
6. 圖像頂帽運算
(1)基本概念
(2)代碼實現
7. 圖像底帽運算
(1)基本概念
(2)代碼實現
結束語
前言
(1)基本概念
此處參考:圖像處理中常見的形態學方法
? ? ? ?形態學圖像處理(簡稱形態學)是指一系列處理圖像形狀特征的圖像處理技術,其基本思想是利用一些特殊的結構元來測量或提取圖像中相應的形狀和特征,以便進一步進行圖像分析和處理。
(2)讀取圖像信息
""" Author:XiaoMa date:2021/11/2 """ import cv2 import 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)基本概念
? ? ? ?前面我們將圖像轉化為二值圖像,則顯示的圖像只有黑白兩種區別,圖像腐蝕操作就是擴大圖像中的黑色部分,使得圖像中的白色減少,即白色部分被腐蝕。
(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)?
結束語
? ? ? ?這篇文章主要介紹了圖像形態學處理中的一些基本操作方法,包括圖像的腐蝕、膨脹、開運算、閉運算、梯度運算、頂帽運算以及底帽運算這幾部分,參考的文章鏈接都粘貼在了原文中,需要加強學習、深入了解的小伙伴可以點進去查看。圖像形態學處理的主要目的是得到圖像的形狀信息,一般在一些研究動植物行為狀態等領域使用的較廣,大家感興趣可以多了解,多學習,加油!
總結
以上是生活随笔為你收集整理的Python 计算机视觉(十一)—— OpenCV 图像形态学处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 计算机视觉(十)—— Op
- 下一篇: Python 计算机视觉(十二)—— O