opencv-python中的cv2.filter()函数随笔

有时候我们想要处理的图像中噪音太多,影响到我们的识别判断,我们就需要对图像进行模糊处理,使图像变得平滑。
而opencv-python提供给我们cv2.filter()函数来对图像进行2D卷积,我们可以使用自定义的卷积核来对图像进行卷积操作。

构造函数:
dst=cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
参数解释
  • src:待处理图像
  • ddepth:目标图像深度,如果值为-1则表示目标图像输出为与原图像深度相同。
  • kernel:自定义的卷积核,float32型浮点矩阵。
  • anchor 内核的锚点,指示内核中过滤点的相对位置;锚应位于内核中;默认值(-1,-1)表示锚位于内核中心。
  • detal 在将它们存储在dst中之前,将可选值添加到已过滤的像素中。类似于偏置。
  • borderType 像素外推法,参见BorderTypes

图像内核是一个小矩阵,在Photoshop或Gimp中找到的效果都可以实现,例如模糊,锐化,轮廓或浮雕。它们还用于机器学习中的“特征提取”,这是一种用于确定图像最重要部分的技术。在这种情况下,该过程更普遍地称为“卷积”
有许多特殊的内核,一 一记录下来。
这些效果唯一的差别就是他们的卷积核不同
opencv-python中的cv2.filter()函数随笔_第1张图片

模糊(blur)

0.0625 0.125 0.0625
0.125 0.25 0.125
0.0625 0.125 0.125
import numpy as np
import cv2

img=cv2.imread('D://zopencv//ball.jpg')
kernel=np.array( (  [0.0625, 0.125, 0.0625],
       			    [0.125, 0.25, 0.125],
                    [0.0625, 0.125, 0.0625]),dtype="float32")
dst=cv2.filter2D(img,-1,kernel)
mask=cv2.resize(dst,None,fx=0.5,fy=0.5,interpolation=cv2.INTER_AREA)
cv2.imshow('image',mask)
cv2.waitKey(0)
cv2.destroyAllWindows()

opencv-python中的cv2.filter()函数随笔_第2张图片

sobel

-1 -2 -1
0 0 0
1 2 1
kernel=np.array( (  [-1,-2,-1],
       				 [0,0,0],
      			     [1,2,1]),dtype="float32")

opencv-python中的cv2.filter()函数随笔_第3张图片

浮雕(emboss)

-2 -1 0
-1 1 1
0 1 2
在这里插入代码片

opencv-python中的cv2.filter()函数随笔_第4张图片

大纲(outline)

轮廓内核/边缘内核,强调边缘

-1 -1 -1
-1 8 -1
-1 -1 -1
在这里插入代码片

opencv-python中的cv2.filter()函数随笔_第5张图片

锐化(sharpen)

0 -1 0
-1 5 -1
0 -1 0
kernel=np.array( (  [0,-1,0],
   			        [-1,5,-1],
     			    [0,-1,0]),dtype="float32")

opencv-python中的cv2.filter()函数随笔_第6张图片

拉普拉斯算子(laplacian operator)

用于边缘检测,或者图像中的模糊处理。

0 1 0
1 -4 1
0 1 0
kernel=np.array( (  [0,1,0],
                    [1,-4,1],
                    [0,1,0]),dtype="float32")

opencv-python中的cv2.filter()函数随笔_第7张图片

你可能感兴趣的:(OpenCV学习之路)