opencv 图像卷积
时间: 2023-09-17 15:12:16 浏览: 97
OpenCV 2.4 遍历图像的方式实现图像卷积
在 OpenCV 中,可以使用函数 `filter2D()` 进行图像卷积操作。该函数的定义如下:
```
void filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor=Point(-1,-1), double delta=0, int borderType=BORDER_DEFAULT );
```
其中,参数 `src` 是输入图像,参数 `dst` 是输出图像,参数 `ddepth` 是输出图像的深度,参数 `kernel` 是卷积核,参数 `anchor` 是卷积核的锚点,参数 `delta` 是输出图像的偏移值,参数 `borderType` 是边缘处理方式。
下面是一个例子,演示如何使用 `filter2D()` 进行图像卷积:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('lena.jpg')
# 将图像转为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 定义一个 Sobel 滤波器
sobel_kernel = np.array([[-1,0,1],[-2,0,2],[-1,0,1]], dtype=np.float32)
# 对灰度图进行卷积操作
result = cv2.filter2D(gray, -1, sobel_kernel)
# 显示结果
cv2.imshow('result', result)
cv2.waitKey()
cv2.destroyAllWindows()
```
在这个例子中,我们读取了一张图像,并将其转为灰度图。然后,我们定义了一个 Sobel 滤波器,用于检测图像的边缘。最后,我们使用 `filter2D()` 函数对灰度图进行卷积操作,并将结果显示出来。
阅读全文