zoukankan      html  css  js  c++  java
  • Python调用OpenCV滤波

    这一篇记录几种OpenCV提供的滤波函数,包括2D卷积、平均滤波、高斯滤波、中值滤波和双边滤波。

    1、2D卷积

    2D卷积使用的是OpenCV提供的filter2D()函数,该函数需要传入一个卷积核,这个卷积核可以通过numpy来构造:

    import numpy as np
    import cv2 as cv
    
    src = cv.imread("D:/lena.bmp")
    kernel = np.ones((5,5),np.float32)/25
    dst = cv.filter2D(src,-1,kernel)
    cv.imshow('filter2D', dst)
    cv.waitKey(0)
    cv.destroyAllWindows()

    2、平均滤波blur

    OpenCV的平均滤波用的是blur:

    import numpy as np    
    import cv2 as cv
    
    src = cv.imread("D:/lena.bmp")
    dst = cv.blur(src,(5,5))
    cv.imshow('filter2D', dst)
    cv.waitKey(0)
    cv.destroyAllWindows()

    3、高斯模糊

    高斯模糊的函数是cv2.GaussianBlur():

    import numpy as np    
    import cv2 as cv
    
    src = cv.imread("D:/lena.bmp")
    dst = cv.GaussianBlur(src, (5,5), 0)
    cv.imshow('filter2D', dst)
    cv.waitKey(0)
    cv.destroyAllWindows()

    代码中之定义了X轴的标准差为0,所以在使用的时候OpenCV会把Y轴的标准差也设置为0,然后因为标准差为零,所以会函数会根据核的大小自己计算。也就是说,如果只定义了X轴的标准差,则Y轴会与X轴一样,如果定义标准差为0,那么函数就会自己计算标准差。

    4、中值模糊

    中值模糊是比较适合椒盐噪声的,其函数为cv2.medianBlur:

    import numpy as np    
    import cv2 as cv
    
    src = cv.imread("D:/lena.bmp")
    dst = cv.medianBlur(src, 5)
    cv.imshow('filter2D', dst)
    cv.waitKey(0)
    cv.destroyAllWindows()

    5、双边滤波

    哈,这个是磨皮滤波,OpenCV的双边滤波是cv2.bilateralFilter(),这个函数有四个输入,分别是原图、尺寸、颜色标准差和空间标准差:

    import numpy as np
    import cv2 as cv
    
    src = cv.imread("D:/lena.bmp")
    dst = cv.bilateralFilter(src, 9, 50, 100)
    cv.imshow('filter2D', dst)
    cv.waitKey(0)
    cv.destroyAllWindows()

    之所以叫它磨皮滤波,这是因为它会将相对平坦处平滑掉,然后保持边缘不变,这样的话变化较小的纹理会被模糊掉,也就是起到类似磨皮的效果哈,不信可以找张没开美颜的自拍试试...

    可以注意lena的脸和肩膀...23333....

    只记得花开碧树

    可曾顾衾冷锦疏

    最难忘 应是来时路

    那会儿身影

    不斜也扶

    到如今

    凭谁问甘苦

    梦中事

    笑是真笑

    哭是真哭

    -- 汪国真 《在梦里,我遇见了你》

    上善若水,为而不争。
  • 相关阅读:
    Vcenter虚拟化三部曲----SQL Server 2008 R2 数据库安装
    Vcenter虚拟化三部曲----VMWare ESXi 5.5安装及配置
    SaltStack 自动化工具
    KVM虚拟化
    redis单节点集群
    linux--yum源,源码包
    运维工程师常用命令(持续更新)
    TARS基金会:构建微服务开源生态
    TarsGo新版本发布,支持protobuf,zipkin和自定义插件
    .NET 发送电子邮件
  • 原文地址:https://www.cnblogs.com/Bearoom/p/12489400.html
Copyright © 2011-2022 走看看