使用OpenCV Python程式模糊影像?


OpenCV是最好的Python影像處理庫之一。就像訊號會帶有噪聲一樣,影像也包含各種噪聲,主要來自影像源本身(相機感測器)。Python OpenCV庫提供了影像平滑(也稱為模糊)的方法。這就是我們將在本節中要做的。一種常用的技術是使用高斯濾波器 (Gf) 來模糊影像。這樣可以平滑影像中的任何銳利邊緣,同時最大限度地減少過度模糊。

語法

cv.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType=BORDER_DEFAULT]]] )

其中:

  • src – 輸入影像

  • dst – 輸出影像

  • ksize – 高斯核大小 [高度 寬度]。如果 ksize 設定為 [0 0],則 ksize 從 sigma 值計算。

  • sigmaX – 沿 X 軸(水平方向)的核標準差。

  • sigmaY – 沿 Y 軸(垂直方向)的核標準差。

  • Bordertype – 指定在核心應用於影像邊界時影像邊界。一些可能的值包括:cv.BORDER_CONSTANT, cv.BORDER_REPLICATE, cv.BORDER_REFLECT, cv.BORDER_WRAP, cv.BORDER_DEFAULT, cv.BORDER_ISOLATED, cv.BORDER_TRANSPARENT 等。

下面是使用OpenCV庫對影像進行高斯模糊的程式。

import cv2
import numpy

# read image
src = cv2.imread('LionKing.jpeg', cv2.IMREAD_UNCHANGED)

# apply guassian blur on src image
dst = cv2.GaussianBlur(src,(3,3),cv2.BORDER_DEFAULT)

# display input and output image
cv2.imshow("Gaussian Blur",numpy.hstack((src, dst)))
cv2.waitKey(0) # waits until a key is pressed
cv2.destroyAllWindows() # destroys the window showing image

結果

兩張影像看起來幾乎相同(原始/模糊)。現在讓我們增加核心大小並觀察結果。

dst = cv2.GaussianBlur(src,(13,13),cv2.BORDER_DEFAULT)

現在兩張影像之間有明顯的區別。

更新於:2019年7月30日

511 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告