import cv2 as cv
import numpy as np
# 高斯双边(考虑了像素值之间的差异)
def bi_demo(image):
# 100是sigmaColor,15是sigmaSpace,d设为0,后面根据sigmaSpace自己计算
# 通常sigmaColor取大点儿,可以将小的差异模糊掉,sigmaSpace取小点儿,使和小点儿,可以减少计算量
# d是distance,若不输入d,用sigmaSpace,若输入d,则根据d计算sigmaSpace
# dst = cv.bilateralFilter(src, d, sigmaColor, sigmaSpace)
dst = cv.bilateralFilter(image, 0, 100, 15)
cv.imshow('bi_demo', dst)
# 均值迁移
def shift_demo(image):
dst = cv.pyrMeanShiftFiltering(image, 10, 50)
cv.imshow('shift_demo', dst)
src = cv.imread('C:/Users/Y/Pictures/Saved Pictures/example.png')
cv.namedWindow('input image', cv.WINDOW_AUTOSIZE)
cv.imshow('input image', src)
bi_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
原图像 经过高斯双边的图像 经过均值迁移的图像