如何使用OpenCV Python应用自定义滤波器(2D卷积)?

如何使用OpenCV Python应用自定义滤波器(2D卷积)?

在本教程中,我们将看到如何应用两种不同的低通滤波器以平滑图像(从图像中去除噪音)。这两个滤波器是 filter2DboxFilter 。这些滤波器是空间中的2D滤波器。

将2D滤波器应用于图像也称为“2D卷积操作”。这些滤波器通常称为平均滤波器。

这些滤波器的主要缺点是它们也平滑图像中的边缘。如果您不想平滑边缘,则可以应用“双边滤波器”。双边滤波器操作保留边缘。

语法

以下是 Filter2D 和 BoxFilter 的语法

cv2.filter2D(img,ddepth,kernel)
cv2.boxFilter(img,ddepth,ksize)

参数

  • img - 要应用滤波器操作的输入图像。

  • ddepth - 输出图像的所需深度。如果 “depth=-1”,则返回具有与输入图像相同深度的输出图像。

  • kernel - 卷积核。在 filter2D 中,我们将卷积核作为 numpy 数组传递。

  • ksize - 卷积核的大小。在 boxFilter 中,我们仅传递元组作为卷积核大小。

步骤

为执行双边滤波器操作,您可以按照以下步骤操作-

导入所需的库。在所有以下 Python 示例中,所需的 Python 库是 OpenCV 。确保您已经安装了它。

import cv2

读取输入图像并将其转换为灰度图像。

img = cv2.imread('vehicle.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

在filter2D中定义内核以应用滤波器。

kernel = np.ones((5,5),np.float32)/25

在输入图像上应用filter2D或boxFilter滤波。我们将ddepth、kernel或ksize作为参数传递给filter函数。

result = cv2.filter2D(img,-1,kernel)
result = cv2.boxFilter(img,-1,(5,5))

显示过滤后的图像。

cv2.imshow('Filter 2D Image',result)
cv2.waitKey(0)
cv2.destroyAllWindows()

让我们看一下在输入图像上执行filter2D和boxFilter操作的示例。

我们将使用以下图像作为所有下面的 输入文件 的例子。

如何使用OpenCV Python应用自定义滤波器(2D卷积)?

示例 1

在此Python程序中,我们使用5×5内核对输入图像应用 filter2D

# 导入需要的库
import cv2
import numpy as np

# 读取输入图像
img = cv2.imread('vehicle.jpg')

# 将图像转换为灰度图
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 定义一个 5x5 的核
kernel = np.ones((5,5),np.float32)/25

# 应用平均值滤波器
result = cv2.filter2D(img,-1,kernel)

# 显示输出图像
cv2.imshow("Filter 2D Image ", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

执行上述代码后,将生成以下输出窗口 –

如何使用OpenCV Python应用自定义滤波器(2D卷积)?

上述输出图像是使用 cv2.filter2D() 应用平均值滤波器后获得的。

示例2

在下面的 Python 示例中,我们使用 5×5 的核对输入图像应用了 boxFilter 操作。

# 导入所需库
import cv2

# 读取输入图像
img = cv2.imread('vehicle.jpg')

# 将图像转换为灰度图
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 对输入图像应用 boxFilter
result = cv2.boxFilter(img,-1,(5,5))

# 在过滤操作后显示图像
cv2.imshow("Box Filter Image", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

执行上述代码后,将生成以下输出窗口 –

如何使用OpenCV Python应用自定义滤波器(2D卷积)?

上述输出图像是使用 cv2.boxFilter() 应用平均值滤波器后获得的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程