import cv2 as cv
import numpy as np
img = cv.imread("./shangyi.jpg")
#2D卷积
kernel = np.ones((50,50),np.float32)/2500#卷积矩阵
# src:原图像
# ddepth:目标图像的深度,值为-1时默认与原图的深度一致.
# kernel:卷积核(或相当于相关核),单通道浮点矩阵;如果要将不同的内核应用于不同的通道,请使用拆分将图像拆分为单独的颜色平面,然后单独处理它们.
# anchor?:内核的锚点,指示内核中过滤点的相对位置;锚应位于内核中;默认值(-1,-1)表示锚位于内核中心.
# detal?:在将它们存储在dst中之前,将可选值添加到已过滤的像素中。类似于偏移量
dst = cv.filter2D(img,-1,kernel)
#平均模糊
#ksize:模糊大小,值没有限制 type:tuple,这里是(50,50)
res0 = cv.blur(img,(50,50))
#中值模糊 模糊会呈现一种块状感
#ksize:模糊大小,值为大于1的奇数,这里是51
res = cv.medianBlur(img,51)
#高斯模糊 ^_^近视的感觉
#ksize:模糊大小,值为正奇数 type:tuple,这里是(51,51)
#sigmaX:X方向上的高斯核标准差,值为0则会从ksize算出
#sigmaY?:Y方向上的高斯核标准差,不填则引用sigmaX的值,同样值为0则会从ksize算出
res1 = cv.GaussianBlur(img,(51,51),0)
#双边模糊 模糊相近的颜色,超出高度差的颜色被认为非相近颜色从而保留 =>用于边缘保留
#d:取相邻的像素点个数作为模糊标准
#sigmaColor:色彩的影响范围差,在这个数字内表示相近的颜色
#sigmaColor:像素的影响范围差,在这个数字内的都会被高斯模糊的基像素,有d时以d为准
res2 = cv.bilateralFilter(img,50,75,75)
cv.namedWindow('img',cv.WINDOW_NORMAL)
cv.resizeWindow('img',200,100)
cv.imshow('img',dst)
cv.waitKey(0)
cv.imshow('img',res0)
cv.waitKey(0)
cv.imshow('img',res)
cv.waitKey(0)
cv.imshow('img',res1)
cv.waitKey(0)
cv.imshow('img',res2)
cv.waitKey(0)
cv.destroyAllWindows()
python-opencv 图像平滑(模糊)
最新推荐文章于 2024-07-17 20:14:22 发布