0


Opencv之图像滤波:1.图像卷积(cv2.filter2D)

  •    写这些博客主要是记录自己学习Opencv的过程,也希望能帮助到大家。*
    
      
    
      在OpenCV中,允许用户自定义卷积核实现卷积操作,使用自定义卷积核实现卷积操作的函数是cv2.filter2D(),其语法格式为:
    
      dst=cv2.filter2D(src,ddepth,kernel,anchor,delta,borderType)
    
       式中:
    
       ● dst是返回值,表示进行方框滤波后得到的处理结果。
    
       ● src 是需要处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F或者CV_64F中的一 种。
    
      ● ddepth是处理结果图像的图像深度,一般使用-1表示与原始图像使用相同的图像深度。
    
      ● kernel是卷积核,是一个单通道的数组。如果想在处理彩色图像时,让每个通道使用不同的核,则必须将彩色图像分解后使用不同的核完成操作。
    
      ● anchor 是锚点,其默认值是(-1,-1),表示当前计算均值的点位于核的中心点位 置。该值使用默认值即可,在特殊情况下可以指定不同的点作为锚点。
    
      ● delta 是修正值,它是可选项。如果该值存在,会在基础滤波的结果上加上该值作 为最终的滤波处理结果。
    
      ● borderType是边界样式,该值决定了以何种情况处理边界,通常使用默认值即可。
    
      在一般情况下,使用cv.filter2D()时,对于参数锚点anchor,修正值delta,边界样式borderType,直接采用其默认值即可。
    
      因此,cv.filter2D()的常用形式为:
    
      dst=cv2.filter2D(src,ddepth,kernel)
    
      例:
    
      ![](https://img-blog.csdnimg.cn/59a81cdcbeae4621877dbb1ca243ed25.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASnVzdHRoLg==,size_10,color_FFFFFF,t_70,g_se,x_16)
    
import cv2  as cv
import numpy as np

def cv_show(name, img):
    cv.imshow(name, img)
    cv.waitKey(0)
    cv.destroyAllWindows()

# 卷积操作
src = np.array([[1,2,3,4,5],
                [6,7,8,9,10],
                [11,12,13,14,15],
                [16,17,18,19,20],
                [21,22,23,24,25]],dtype='float32')
kernel1 = np.ones((3,3), dtype='float32')/9
result = cv.filter2D(src, -1,kernel=kernel1)

print('卷积前矩阵为:\n {}'.format(src))
print('卷积后矩阵为:\n {}'.format(result))

# 与图像做卷积操作
img = cv.imread('D:\\dlam.jpg')
if img is None:
    print('Failed to read the imagine')
kernel2 = np.ones((7,7), dtype='float32')/49
result2 = cv.filter2D(img, -1,kernel=kernel2)

cv_show('哆啦A梦',img)
cv_show('reslut', result2)

结果如下:

卷积前矩阵为:
[[ 1. 2. 3. 4. 5.]
[ 6. 7. 8. 9. 10.]
[11. 12. 13. 14. 15.]
[16. 17. 18. 19. 20.]
[21. 22. 23. 24. 25.]]
卷积后矩阵为:
[[ 5. 5.3333335 6.3333335 7.333333 7.666667 ]
[ 6.666667 7. 8. 9. 9.333333 ]
[11.666668 12. 13. 13.999999 14.333334 ]
[16.666666 17. 17.999998 19. 19.333332 ]
[18.333334 18.666666 19.666668 20.666668 21. ]]

可以明显的看出图像变模糊了


本文转载自: https://blog.csdn.net/qq_49478668/article/details/123169357
版权归原作者 Justth. 所有, 如有侵权,请联系我们删除。

“Opencv之图像滤波:1.图像卷积(cv2.filter2D)”的评论:

还没有评论