OpenCV——对图像进行模糊操作blur

import numpy as np
import cv2 as cv


def blur_demo(image):
    # 均值模糊
    blur = cv.blur(image, (5, 5))
    cv.imshow("lena_blur", blur)


def median_blur_demo(image):
    # 中值模糊
    blur = cv.medianBlur(image, 5)
    cv.imshow("lena_blur", blur)


def custom_blur(image):
    # 自定义卷积核,/25是使得卷积核元素相加为1
    # kernel = np.ones([5, 5], np.float32)/25
    # 锐化核
    kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
    """
    filter2D参数解释:
    src:输入资源
    dst:如若设置该参数,则直接将结果保存值该对象中,可以实现in_place的操作
    kernel:卷积核
    ddepth:目标图像的深度,如果设置为负数则目标图像的深度与输入图像保持一致
    anchor:锚点,默认为卷积核中心
    delta:该数值为在原图像数值上增添的亮度值
    boderType:边界的类型,由于卷积核可能会超出边界进行处理,因此需要对边界的拓展方式进行定义
        有以下几种边界拓展方式:
         Various border types, image boundaries are denoted with '|'
         * BORDER_REPLICATE:     aaaaaa|abcdefgh|hhhhhhh
         * BORDER_REFLECT:       fedcba|abcdefgh|hgfedcb
         * BORDER_REFLECT_101:   gfedcb|abcdefgh|gfedcba
         * BORDER_WRAP:          cdefgh|abcdefgh|abcdefg
         * BORDER_CONSTANT:      iiiiii|abcdefgh|iiiiiii  with some specified 'i'
    """
    dis = cv.filter2D(image, -1, kernel)
    cv.imshow("custom_blur", dis)

def gaussian_blur(image):
    # 高斯模糊:毛玻璃效果
    # 指定了ksize(kernel size)则可以不指定sigmaX以及sigmaY(这两个控制在x以及y方向上的高斯标准差)
    blured = cv.GaussianBlur(image, ksize=(0, 0), sigmaX=1, sigmaY=1)
    cv.imshow("Gaussian blur", blured)


src = cv.imread("data/lena.jpg")
cv.imshow("lena", src)
# blur_demo(src)
# median_blur_demo(src)
# custom_blur(src)
gaussion_blur(src)

cv.waitKey(0)
cv.destroyAllWindows()
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值