cv2.filter2D
时间: 2023-06-14 11:03:07 浏览: 83
filter2D滤波
cv2.filter2D是OpenCV中的一个函数,用于对图像进行卷积操作。它可以将一个自定义的卷积核与图像进行卷积操作,从而实现图像的滤波、边缘检测等功能。
函数的定义为:
```
dst = cv2.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
```
其中,参数含义如下:
- src:输入图像
- ddepth:输出图像的深度,-1表示与输入图像的深度相同
- kernel:卷积核
- dst:输出图像,可以为None
- anchor:卷积核的锚点,默认为(-1, -1),表示位于卷积核的中心点
- delta:添加到每个像素的值,用于调整输出图像的亮度和对比度,默认为0
- borderType:边界扩展类型,默认为cv2.BORDER_DEFAULT
举个例子,假设我们想对一张灰度图像进行边缘检测,可以使用如下代码:
```
import cv2
import numpy as np
img = cv2.imread('test.jpg', 0) # 读取灰度图像
kernel = np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]]) # 定义卷积核
dst = cv2.filter2D(img, -1, kernel) # 进行卷积操作
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们定义了一个3×3的卷积核,其中中心点的权重为8,周围点的权重为-1。然后使用cv2.filter2D函数对灰度图像进行卷积操作,得到边缘检测的结果。
阅读全文