如何使用 Python OpenCV 對影像進行自適應均值和高斯閾值處理?
自適應閾值是一種閾值處理技術。還有其他型別的閾值處理技術,例如使用全域性閾值值的簡單閾值處理。但是,對於在不同區域具有不同光照條件的影像,使用全域性閾值值並不是一個好主意。
自適應閾值計算影像中一小區域的閾值。因此,影像中不同區域具有不同的閾值,與簡單的閾值處理技術相比,這可以提供更好的結果。
有三個特殊的引數:adaptive_method、block_size 和 const。請參閱下面給出的語法。
語法
cv2.adaptiveThreshold(img, max_val, adaptive_method, thresh_type, block_size, const)
引數
img − 輸入灰度影像。它是一個 numpy.ndarray。
max_valu − 要分配給畫素的最大值。
adaptive_method − 它決定如何計算閾值。有兩種不同的自適應閾值方法 -
cv2.ADAPTIVE_THRESH_MEAN_C − 在此方法中,閾值是鄰域區域的平均值。
cv2.ADAPTIVE_THRESH_GAUSSIAN_C − 在此方法中,閾值是鄰域值的加權和,其中權重是高斯視窗。
thresh_type − 要應用的閾值型別。
block_size − 決定鄰域區域的大小。
const − 從計算出的平均值或加權平均值中減去的常數。
輸出 - 它返回閾值
讓我們藉助幾個 Python 示例來了解自適應均值閾值和自適應高斯閾值。
輸入影像
我們將在以下示例中使用此影像作為輸入檔案。

示例 1:自適應均值閾值
在此程式中,我們使用cv2.ADAPTIVE_THRESH_MEAN_C 作為自適應方法對輸入影像應用自適應閾值。我們使用block_size=11 和 const=2。我們使用二進位制閾值作為thresh_type。
import cv2 # Read the input RGB image as a Gray Scale image img = cv2.imread('floor.jpg',0) # apply median blur img = cv2.medianBlur(img,5) # apply adaptive mean thresholding th = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY,11,2) # display the output image cv2.imshow("Adaptive Mean Thresholding", th) cv2.waitKey(0) cv2.destroyAllWindows()
輸出
執行以上程式後,將生成以下輸出視窗 -

以上輸出顯示了應用自適應均值閾值後的影像。
示例 2:自適應高斯閾值
在此程式中,我們使用cv2.ADAPTIVE_THRESH_GAUSSIAN_C 作為自適應方法對輸入影像應用自適應閾值。
我們使用block_size=11 和 const=2。我們使用二進位制閾值作為thresh_type。
import cv2 # Read the input RGB image as a Gray Scale image img = cv2.imread('floor.jpg',0) # apply median blur img = cv2.medianBlur(img,5) # apply adaptive mean thresholding th = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,2) # display the output image cv2.imshow("Adaptive Gaussian Thresholding", th) cv2.waitKey(0) cv2.destroyAllWindows()
輸出
執行以上程式後,將生成以下輸出。

以上輸出顯示了應用自適應高斯閾值後的影像。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP