filter2D用于将自定义的滤波器应用于图像,需要为这个函数提供的一个重要参数就是核矩阵。
该函数非常强大,可以生成很多种不同的结果,包括与之前的模糊函数相同的结果,不同的核还可以形成很多不同的滤波器。
不同核的示例
OpenCV API:
cv2.filter2D(src, ddepth, kernel)
参数:
- src:输入的图像
- ddepth:图像的深度
- kernel:卷积核的大小
代码示例:
import cv2 as cv
import numpy as np
src = cv.imread("E:\\qi.png")
img = src.copy()
kernel = np.array([[0, 1.5, 0],
[1.5, -6, 1.5],
[0, 1.5, 0]])
dst = cv.filter2D(img, -1, kernel)
# 显示图像
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 8), dpi=100)
axes[0].imshow(img[:, :, ::-1])
axes[0].set_title("原图")
axes[1].imshow(dst[:, :, ::-1])
axes[1].set_title("结果")
plt.show()
- 代码示例中的卷积核为
可用于检测图像的边缘 - 卷积核
可用于锐化图像 - 卷积核
可生成浮雕化的图像 - 分身(即和本身一模一样)
卷积核 - 之前见过的Sobel算子
卷积核为
Laplacian算子
卷积核为等。