日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

opencv —— morphology形态学操作函数讲解(python)

發布時間:2024/1/1 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv —— morphology形态学操作函数讲解(python) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

opencv —— morphology形態學操作函數講解

目錄

opencv —— morphology形態學操作函數講解

形態學濾波:morphologyEx 函數

開運算:先腐蝕后膨脹。

閉運算:先膨脹后腐蝕。

形態學梯度: 膨脹圖與腐蝕圖之差。

頂帽:頂帽運算(Top Hat)又常常被譯為”禮帽“運算,原圖像與開運算圖之差。

黑帽: 為”閉運算“的結果圖與原圖像之差。


參考博客1

參考博客2

數學形態學(Mathematical morphology) 是一門建立在格論和拓撲學基礎之上的圖像分析學科,是數學形態學圖像處理的基本理論。其基本的運算包括:二值腐蝕和膨脹、二值開閉運算、骨架抽取、極限腐蝕、擊中擊不中變換、形態學梯度、Top-hat變換、顆粒分析、流域變換、灰值腐蝕和膨脹、灰值開閉運算、灰值形態學梯度等。

morphology形態學操作函數主要包含了五個操作:開運算、閉運算、形態學梯度、頂帽、黑帽。opencv 將這些操作集合到了一個函數中 morphologyEx。要實現不同操作,僅需改變其第三個成員變量形態學運算標識符。?

形態學濾波:morphologyEx 函數

void?morphologyEx(InputArray src, OutputArray dst, int op, InputArray kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar& borderValue = morphologyDefaultBorderValue());
  • src,輸入圖像,即原圖像,填 Mat 類的對象即可。
  • dst,目標圖像,需要和原圖片有一樣的尺寸和類型。
  • op,形態學運算的類型。

MORPH_ERODE = 0, //腐蝕

MORPH_DILATE = 1, //膨脹

MORPH_OPEN = 2, //開操作

MORPH_CLOSE = 3, //閉操作

MORPH_GRADIENT = 4, //梯度操作

MORPH_TOPHAT = 5, //頂帽操作

MORPH_BLACKHAT = 6, //黑帽操作

  • kernel,膨脹操作的核。當為 NULL 時,表示的是使用參考點位于中心,大小 3×3 的核。
  • anchor,錨點的位置,默認位于中心。
  • iterations 迭代使用 dilate() 的次數,默認值為 1。
  • borderType,邊界拓展的方法。
  • borderValue,當邊界為常數時的邊界值,有默認值,一般不用管。

開運算:先腐蝕后膨脹。

開運算可以用來消除小物體、在纖細點處分離物體、平滑較大物體的邊界的同時并不明顯改變其面積。

代碼示例:

import cv2 import numpy as np import matplotlib.pyplot as plt img=cv2.imread("C:\\Users\\Lijian\\Desktop\\test.jpg",cv2.IMREAD_GRAYSCALE) plt.imshow(img, cmap='Greys_r') kernel = np.ones((1, 5), np.uint8) img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel, anchor=(2, 0), iterations=2) #dilatazione cv2.imshow('open',img) cv2.waitKey(0)

截圖

閉運算:先膨脹后腐蝕。

閉運算能夠排除小型黑洞(黑色區域),可以將團塊的邊緣突出出來。

代碼演示:

import cv2 import numpy as np import matplotlib.pyplot as plt img=cv2.imread("C:\\Users\\Lijian\\Desktop\\test.jpg",cv2.IMREAD_GRAYSCALE) plt.imshow(img, cmap='Greys_r')kernel = np.ones((1, 5), np.uint8) img = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, anchor=(2, 0), iterations=2) #dilatazione cv2.imshow('close',img) cv2.waitKey(0)

截圖

形態學梯度: 膨脹圖與腐蝕圖之差。

對二值圖像進行這一操作可以將團塊(blob)的邊緣突出出來。我們可以用形態學梯度來保留物體的邊緣輪廓。

代碼演示:

import cv2 import numpy as np import matplotlib.pyplot as plt img=cv2.imread("C:\\Users\\Lijian\\Desktop\\test.jpg",cv2.IMREAD_GRAYSCALE) plt.imshow(img, cmap='Greys_r')kernel = np.ones((1, 5), np.uint8) img = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel, anchor=(2, 0), iterations=2) #dilatazione cv2.imshow('MORPH_GRADIENT',img) cv2.waitKey(0)

截圖:

頂帽:頂帽運算(Top Hat)又常常被譯為”禮帽“運算,原圖像與開運算圖之差。

因為開運算帶來的結果是放大了裂縫或者局部低亮度的區域,因此,從原圖中減去開運算后的圖,得到的效果圖突出了比原圖輪廓周圍的區域更明亮的區域,所以頂帽運算往往用來分離比鄰近點亮一些的斑塊。當一幅圖像具有大幅的背景的時候,而微小物品比較有規律的情況下,可以使用頂帽運算進行背景提取。

代碼演示:

import cv2 import numpy as np import matplotlib.pyplot as plt img=cv2.imread("C:\\Users\\Lijian\\Desktop\\test.jpg",cv2.IMREAD_GRAYSCALE) plt.imshow(img, cmap='Greys_r')kernel = np.ones((1, 5), np.uint8) img = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel, anchor=(2, 0), iterations=2) #dilatazione cv2.imshow('MORPH_TOPHAT',img) cv2.waitKey(0)

截圖:

黑帽: 為”閉運算“的結果圖與原圖像之差。

黑帽運算后的效果圖突出了比原圖輪廓周圍的區域更暗的區域,黑帽運算用來分離比鄰近點暗一些的斑塊。

代碼演示:

?

import cv2 import numpy as np import matplotlib.pyplot as plt img=cv2.imread("C:\\Users\\Lijian\\Desktop\\test.jpg",cv2.IMREAD_GRAYSCALE) plt.imshow(img, cmap='Greys_r') kernel = np.ones((1, 5), np.uint8) img = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel, anchor=(2, 0), iterations=2) #dilatazione cv2.imshow('MORPH_BLACKHAT',img) cv2.waitKey(0)

截圖

?

總結

以上是生活随笔為你收集整理的opencv —— morphology形态学操作函数讲解(python)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。