opencv高斯滤波cv2.GaussianBlur

import cv2

img=cv2.imread('1.jpg')

#(5, 5)表示高斯矩阵的长与宽都是5,标准差取0
blur=cv2.GaussianBlur(img,(5,5),0)

cv2.imshow('GaussianBlur',blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用numpy中的卷积函数实现滤波。 首先,我们需要创建一个斯核,可以使用scipy中的`scipy.ndimage.gaussian_filter`函数生成一个斯核,该函数的参数sigma控制斯核的大小。 然后,我们使用numpy中的`numpy.convolve`函数对图像进行卷积操作,这可以通过将图像和斯核转换为一维数组来实现。 下面是一个示例代码实现滤波: ``` import numpy as np import cv2 def gaussian_kernel(size, sigma): kernel = np.zeros((size, size)) center = size // 2 for i in range(size): for j in range(size): x = i - center y = j - center kernel[i, j] = np.exp(-(x**2 + y**2) / (2 * sigma**2)) return kernel / (2 * np.pi * sigma**2) def gaussian_filter(image, kernel_size, sigma): kernel = gaussian_kernel(kernel_size, sigma) filtered = np.zeros_like(image) for i in range(image.shape[2]): filtered[:, :, i] = np.convolve(image[:, :, i].flatten(), kernel.flatten(), mode='same').reshape(image.shape[:2]) return filtered.astype(np.uint8) # 读取图像 image = cv2.imread('image.png') # 使用自定义滤波函数进行滤波 filtered = gaussian_filter(image, kernel_size=5, sigma=1) # 显示滤波结果 cv2.imshow('Filtered Image', filtered) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这个示例代码中,`gaussian_kernel`函数用于生成斯核,`gaussian_filter`函数用于对图像进行滤波。在`gaussian_filter`函数中,我们对每个通道单独进行卷积操作,然后将结果合并成一个三维数组。最后将滤波结果转换为`uint8`类型并显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值