• 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....

    只记得花开碧树

    可曾顾衾冷锦疏

    最难忘 应是来时路

    那会儿身影

    不斜也扶

    到如今

    凭谁问甘苦

    梦中事

    笑是真笑

    哭是真哭

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

    上善若水,为而不争。
  • 相关阅读:
    OrCAD原理图封装规则
    web的脚本安全-CSRF
    web的脚本安全-XSS
    数据库中左右连接
    如何解决Java.lang.NoClassDefFoundError
    css垂直居中
    网上免费的web service地址
    JS 正则表达式用法
    jQuery实现滚动条向下拉到一定的程度,然后这层就一直占着不管滚动条如何向下拉都不动了的效果
    Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
  • 原文地址:https://www.cnblogs.com/Bearoom/p/12489400.html
Copyright © 2020-2023  润新知