zoukankan      html  css  js  c++  java
  • opencv_python学习笔记十三

    16 图像平滑

    通过低通滤波器对图像进行模糊

    通过自定义滤波器对图像进行卷积

     

    def filter2D(src, #输入图像

    ddepth, #图像深度

    kernel, #卷积核,单通道浮点矩阵

    dst=None, #输出图像

    anchor=None, #一个被滤波的点在核内的位置(中心)

    delta=None,

    borderType=None)#边界类型

     

    def ones(shape, #数组的形状

    dtype=None, #数组的数据类型

    order='C'): #数组元素在内存中的排列方式,c表示c语言的
           a = empty(shape, dtype, order)
        multiarray.copyto(a, 1, casting='unsafe')
        return a

     

     

     

     

    示例代码

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2016/11/17 10:54
    # @Author  : Retacn
    # @Site    : 图像平滑  卷积
    # @File    : imageFilter.py
    # @Software: PyCharm

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt

    img=cv2.imread('test.jpg')
    kernel=np.ones((5,5),#数组形状
                   
    np.float32)/25#数组的数据类型

    #print(kernel)
    dst=cv2.filter2D(img,-1,kernel)

    plt.subplot(121),plt.imshow(img),plt.title('Original')
    plt.xticks([]),plt.yticks([])

    plt.subplot(122),plt.imshow(dst),plt.title('Averaging')
    plt.xticks([]),plt.yticks([])

    plt.show()

     

     

    图像模糊(图像平滑)

    使用低通滤波器可以实现图像模糊

    1 平均

     

    函数原型

    def blur(src, #源图像

       ksize, #内核大小

       dst=None, #输出图像

       anchor=None, #中心锚点

       borderType=None)# 边界模式

    2 高斯模糊

     

    函数原型

    def GaussianBlur(src, #输入图像

    ksize, #高斯滤波模版大小

    sigmaX, #横向滤波系数

    dst=None, #输出图像

    sigmaY=None,#纵向滤波系数 

    borderType=None)

     

    3 中值模糊

    def medianBlur(src, #源图像

    ksize, #中值滤波器的模版的大小

    dst=None)#输出图像

     

    4 双边滤波

    def bilateralFilter(src, #输入图像

    d, #每个像素邻域的直径

    sigmaColor, #颜色空间的标准偏差

    sigmaSpace, #坐标空间的标准偏差

    dst=None, #输出图像

    borderType=None)#边缘点插值类型

     

    示例代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2016/11/17 13:14
    # @Author  : Retacn
    # @Site    :  平均,对图像进行均值滤波
    # @File    : imageBlur.py
    # @Software: PyCharm

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt

    #读入图像
    img=cv2.imread("../test.jpg")
    #均值滤波
    #blur=cv2.blur(img,(5,5))

    #高斯模糊
    #blur=cv2.GaussianBlur(img,(5,5),0)

    #中值模糊
    #blur=cv2.medianBlur(img,5)

    #双边滤波
    blur=cv2.bilateralFilter(img,9,75,75)

    #原图像
    plt.subplot(121),plt.imshow(img),plt.title("Original")
    plt.xticks([]),plt.yticks([])

    #平均后
    plt.subplot(122),plt.imshow(blur),plt.title('Blurred')
    plt.xticks([]),plt.yticks([])
    plt.show()

  • 相关阅读:
    mongodb 数组批量插入
    iOS 5 Storyboard 学习之 Tabbar Controller,Navigation Controller (2) 代码部分
    【PPT资料】淘宝商品库MySQL优化实践
    ASIHTTPRequest用户登陆:重复用户登陆问题解决
    让Oracle索引Null列
    视图学习:v$Latch (X$KSLLT) 与 v$Latch_Children(X$KSLLT, X$KSLLD)
    sed替换字符时< ' /等符号的处理
    【PPT资料】视觉中国的MongoDB应用实践(QConBeijing2011)
    如何正确的给innodb表空间添加数据文件
    iOS 5 Storyboard 学习之 Tabbar Controller,Navigation Controller (1)
  • 原文地址:https://www.cnblogs.com/retacn-yue/p/6194163.html
Copyright © 2011-2022 走看看