在本文中,我們將了解OpenCV 庫的distanceTransform() 函數。要使用此函數,您需要在 Python environment 中包含 OpenCV library installed 。
distanceTransform() 函數是什麽?
OpenCV distanceTransform() 函數是一個圖像處理函數,用於計算圖像中每個非零像素與最近的零像素之間的歐幾裏德距離。它計算用於分割目的的距離圖。此方法返回灰度圖片,其中每個像素值表示距所提供圖像中最近的非零像素的距離。
distanceTransform()函數的語法
用法: cv2.distanceTransform(src, distanceType, maskSize[, dst[, labels[, distanceMask]]]) -> dst
參數:
該函數接受以下參數:
- src:輸入圖片,應該是單通道的8位或32位浮點圖像。
- distanceType:用於計算距離的距離類型。可以使用以下常量之一:掩碼 cv2.DIST L1、掩碼 cv2.DIST L2、掩碼 cv2.DIST C 或掩碼 cv2.DIST L12。
- maskSize:距離變換掩模的大小。可以使用以下常量之一:cv2.DIST MASK 3、cv2.DIST MASK 5、cv2.DIST MASK PRECISE 和 cv2.DIST MASK PRECISE。
示例 1
我們將在代碼中使用下圖。
然後,您可以導入 cv2 模塊並調用 distanceTransform() 函數,將其傳遞給適當的參數。此函數用於在加載圖像並對其進行閾值處理後對其進行轉換以生成二進製圖像。 5×5 像素的鄰域和 L2(歐幾裏得)距離用於確定距離變換。接下來,使用OpenCV對距離變換圖像進行歸一化和顯示。
Python3
import cv2
import numpy as np
# Load the input image and make it grayscale.
image = cv2.imread('cards.jpeg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Create a binary image by throttling the image.
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
#Determine the distance transform.
dist = cv2.distanceTransform(thresh, cv2.DIST_L2, 5)
# Make the distance transform normal.
dist_output = cv2.normalize(dist, None, 0, 1.0, cv2.NORM_MINMAX)
# Display the distance transform
cv2.imshow('Distance Transform', dist_output)
cv2.waitKey(0)
輸出:
示例 2
我們將在代碼中使用下圖。
在這種情況下,照片會加載、設置閾值並傳遞到遠處。利用 3×3 鄰域和距離測量 DIST LABEL PIXEL,transform() 函數。此外,OpenCV 用於標準化和顯示輸出。
Python3
import cv2
import numpy as np
# Load appropriate image
img = cv2.imread('randomqr.png', 0)
# Threshold the image to convert a binary image
ret, thresh = cv2.threshold(img, 127,
255, cv2.THRESH_BINARY)
# Perform the distance transform
dist = cv2.distanceTransform(thresh,
cv2.DIST_LABEL_PIXEL, 3)
# Standardize the distance transform
normalized = cv2.normalize(dist, None, 0,
255, cv2.NORM_MINMAX, cv2.CV_8U)
# Display the distance transform image
cv2.imshow('Distance Transform', normalized)
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出:
相關用法
- Python OpenCV destroyAllWindows()用法及代碼示例
- Python OpenCV drawKeypoints()用法及代碼示例
- Python OpenCV drawMatchesKnn()用法及代碼示例
- Python OpenCV destroyWindow()用法及代碼示例
- Python OpenCV cv2.circle()用法及代碼示例
- Python OpenCV cv2.blur()用法及代碼示例
- Python OpenCV cv2.ellipse()用法及代碼示例
- Python OpenCV cv2.cvtColor()用法及代碼示例
- Python OpenCV cv2.copyMakeBorder()用法及代碼示例
- Python OpenCV cv2.imread()用法及代碼示例
- Python OpenCV cv2.imshow()用法及代碼示例
- Python OpenCV cv2.imwrite()用法及代碼示例
- Python OpenCV cv2.putText()用法及代碼示例
- Python OpenCV cv2.rectangle()用法及代碼示例
- Python OpenCV cv2.arrowedLine()用法及代碼示例
- Python OpenCV cv2.erode()用法及代碼示例
- Python OpenCV cv2.line()用法及代碼示例
- Python OpenCV cv2.flip()用法及代碼示例
- Python OpenCV cv2.transpose()用法及代碼示例
- Python OpenCV cv2.rotate()用法及代碼示例
- Python OpenCV cv2.polylines()用法及代碼示例
- Python OpenCV Canny()用法及代碼示例
- Python OpenCV Filter2D()用法及代碼示例
- Python OpenCV getgaussiankernel()用法及代碼示例
- Python OpenCV getRotationMatrix2D()用法及代碼示例
注:本文由純淨天空篩選整理自nomaanrz17大神的英文原創作品 Python OpenCV – distanceTransform() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。