【OpenCV入门学习--python】使用filter2D()创建自己的线性过滤器

例子源于OpenCV官网手册(https://docs.opencv.org/4.x/d4/dbd/tutorial_filter_2d.html)
使用OpenCV函数filter2D()创建自己的线性过滤器。

**

运行结果:

**
【OpenCV入门学习--python】使用filter2D()创建自己的线性过滤器_第1张图片

源代码:

"""
@file filter2D.py
@brief Sample code that shows how to implement your own linear filters by using filter2D function
"""
import sys
import cv2 as cv
import numpy as np
def main(argv):
    window_name = 'filter2D Demo'
    #加载图像
    imageName = argv[0] if len(argv) > 0 else 'lena.jpg'
    # Loads an image
    src = cv.imread(cv.samples.findFile(imageName), cv.IMREAD_COLOR)
    # Check if image is loaded fine
    if src is None:
        print ('Error opening image!')
        print ('Usage: filter2D.py [image_name -- default lena.jpg] \n')
        return -1
    
    ddepth = -1#初始化参数
    
    ind = 0
    while True:
        #循环:执行一个无限循环,更新内核大小,并对输入图像应用线性滤波器。
        kernel_size = 3 + 2 * (ind % 5)#将kernel_size更新为[3,11]范围内的奇数值。
        kernel = np.ones((kernel_size, kernel_size), dtype=np.float32)#构建了内核,将它的值设置为一个充满1的矩阵
        kernel /= (kernel_size * kernel_size)#通过将其除以元素的数量来对其进行规范化
        
        dst = cv.filter2D(src, ddepth, kernel)#设置内核之后,我们可以使用filter2D()函数来生成过滤器
#src:源图像

#ddepth:夏令时的深度。负值(如−1)表示深度与源相同。

#kernel:要通过图像扫描的内核
        
        cv.imshow(window_name, dst)
        c = cv.waitKey(500)
        if c == 27:
            break
        ind += 1
    return 0
if __name__ == "__main__":
    main(sys.argv[1:])

你可能感兴趣的:(OpenCV,opencv,python,学习)