使用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 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告