Opencv中的Filter2D过滤器

1.低通滤波与高通滤波

低通滤波:可以去除噪声或平滑图像;
高通滤波:可以帮助查找图像的边缘;

2.函数及相关知识点解释

filter2D(src, ddepth, kernel, dst=None, anchor=None, delta=None, borderType=None)
Stc: 输入的原图像
Ddepth: 表示目标图像的深度,默认是原来的图像深度相同,即-1
Dst: 表示输出的目标图像
Kernel:表示卷积核,一个单通道的浮点型矩阵;如果想在不同的通道使用不同的kernel,可以先使用split()函数将图像通道分开
Anchor:内核基准点,默认值为(-1,-1),说明位于kernel的中心位置;类似于偏置
Delta:表示在将过滤后的像素存储到dst之前,向其添加可选值
BorderType:表示像素向外逼近的方法,默认值为BORDER_DEFAULT
Opencv中的Filter2D过滤器
U(unsigned integer)表示的是无符号整数,S(signed integer)是有符号整数,F(float)是浮点数。
上面的:CV_8U:表示8位无符号整数

Opencv中的Filter2D过滤器
Opencv中的Filter2D过滤器

3.代码实战

实例代码:
import os
import cv2
import numpy as np

def Filter2D(img_path='images/lenna.jpg'):
    img_src=cv2.imread(img_path)
    img=cv2.resize(src=img_src,dsize=(512,512))
    kernel=np.ones(
        (5,5),np.float32
    )/25
    img=cv2.filter2D(img,-1,kernel=kernel)
    cv2.imshow('img',img)
    cv2.imshow('img_src',img_src)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == '__main__':
    print('Pycharm')
    Filter2D()

(1)模糊

:消除了相邻像素之间的差异
Opencv中的Filter2D过滤器

(2)Sobel算子(索贝尔)

:仅用于显示特定方向上相邻像素值的差异:left sobel,right sobel,top sobel,bottom sobel。
Opencv中的Filter2D过滤器
Opencv中的Filter2D过滤器

(3)浮雕(emboss)

:通过强调像素的差在给定方向的Givens深度错觉。
Opencv中的Filter2D过滤器

(4)大纲(outline)

:一个轮廓内核(也称为“边缘”的内核)用于突出显示的像素值大的差异。具有接近相同强度的相邻像素旁边的像素在新图像中将显示为黑色,而强烈不同的相邻像素相邻的像素将显示为白色。
Opencv中的Filter2D过滤器
Opencv中的Filter2D过滤器

(5)锐化

:强调在相邻的像素值的差异,使图片看起来更加的生动
Opencv中的Filter2D过滤器

(6)拉普拉斯算子(laplacian operator)

:用于边缘检测,对检测图中模糊的也起作用
Opencv中的Filter2D过滤器
Opencv中的Filter2D过滤器

(7)分身:就是原图

Opencv中的Filter2D过滤器

实时检测例子:
def detect_Filter2D(kernel):
    cap=cv2.VideoCapture(0)
    while cap.isOpened():
        OK,frame=cap.read()
        # 缩放图片的大小
        img = cv2.resize(src=frame, dsize=(512, 512))
        # 卷积操作
        img = cv2.filter2D(img, -1, kernel=kernel)
        cv2.imshow('img', img)
        if cv2.waitKey(1)&0XFF==27:
            break
    cap.release()
    cv2.destroyAllWindows()
if __name__ == '__main__':
    print('Pycharm')
    kernel=np.array((
            [-1,-2,-1],
            [0,0,0],
            [1,2,1]),
            dtype=np.float32
        )
    detect_Filter2D(kernel=kernel)

Opencv中的Filter2D过滤器
文章参考处:https://wenku.baidu.com/view/2e23fa6a2d3f5727a5e9856a561252d380eb206d.html
图像位深的解释:https://blog.csdn.net/qq_30460949/article/details/103456712

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
上一篇 2022年6月8日 上午10:46
下一篇 2022年6月8日 上午10:48

相关推荐

本站注重文章个人版权,不会主动收集付费或者带有商业版权的文章,如果出现侵权情况只可能是作者后期更改了版权声明,如果出现这种情况请主动联系我们,我们看到会在第一时间删除!本站专注于人工智能高质量优质文章收集,方便各位学者快速找到学习资源,本站收集的文章都会附上文章出处,如果不愿意分享到本平台,我们会第一时间删除!