當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python OpenCV distanceTransform()用法及代碼示例


在本文中,我們將了解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

我們將在代碼中使用下圖。

Python OpenCV - distanceTransform() Function

然後,您可以導入 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) 

輸出:

Python OpenCV - distanceTransform() Function

示例 2

我們將在代碼中使用下圖。

Python OpenCV - distanceTransform() Function

在這種情況下,照片會加載、設置閾值並傳遞到遠處。利用 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 - distanceTransform() Function


相關用法


注:本文由純淨天空篩選整理自nomaanrz17大神的英文原創作品 Python OpenCV – distanceTransform() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。