本文主要是介绍选取一张图片,通过滑动条控制参数,对图片进行均值滤波,高斯滤波,中值滤波,双波滤波的处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这里写自定义目录标题
- 选取一张图片,通过滑动条控制参数,对图片进行均值滤波,高斯滤波,中值滤波,双波滤波的处理
- 均值滤波 cv2.blur(img, (ksize,ksize))
- 中值滤波 cv2.medianBlur(img, kisze)
- 高斯滤波 cv2.gaussianBlur(img, (ksize, ksize), sigmaX)
- 双边滤波 cv2.bilateralFilter(img, d, sigmaColor, sigmaSpace)
选取一张图片,通过滑动条控制参数,对图片进行均值滤波,高斯滤波,中值滤波,双波滤波的处理
最近在学习人机交互,本文章是对python调用opencv实现图像平滑的一些总结。包括四个算法:均值滤波,中值滤波,高斯滤波,双边滤波。
均值滤波 cv2.blur(img, (ksize,ksize))
第一个参数是处理的图像
第二个参数是核的大小,核的大小只能是大于1的奇数,如3,5,7等。
中值滤波 cv2.medianBlur(img, kisze)
第一个参数是操作的图像
第二个参数是核的尺寸
高斯滤波 cv2.gaussianBlur(img, (ksize, ksize), sigmaX)
第二个参数是核的大小
第三个参数sigmaX影响模糊效果:
sigmaX小,表现在高斯曲线上就是曲线越高越尖,表现在滤波效果上就是模糊程度小;
sigmaX大,表现在高斯曲线上就是曲线越矮越平缓,表现在滤波效果上就是模糊程度大
双边滤波 cv2.bilateralFilter(img, d, sigmaColor, sigmaSpace)
第二个参数是领域的直径
第三个参数sigmaColor是灰度值相似性高斯函数标准差和空间高斯函数标准差。
第四个参数sigmaSpace是空间高斯函数标准差
代码如下:
# -*- coding: utf-8 -*-
import cv2WINDOWNAME = "lvbo"
MeanBlurValue = 1
GaussianBlurValue = 1
MedianBlurValue = 1
BilateralFilterValue = 1
KSIZE = 1
MaxVal = 20#均值滤波回调函数
def on_MeanBlur(MeanBlurValue):KSIZE = MeanBlurValue * 2 + 1img1 = cv2.blur(img, (KSIZE, KSIZE))cv2. imshow(WINDOWNAME, img1)
#中值滤波回调函数
def on_MedianBlur(MedianBlurValue):KSIZE = MedianBlurValue * 2 + 1img3 = cv2.medianBlur(img, KSIZE)cv2.imshow(WINDOWNAME, img3)
#高斯滤波回调函数
def on_GaussianBlur(GaussianBlurValue):global KSIZEKSIZE = GaussianBlurValue * 2 + 3#后两个参数:核的大小和方差img2 = cv2.GaussianBlur(img, (KSIZE, KSIZE), 0)cv2.imshow(WINDOWNAME, img2)
#双边滤波回调函数
def on_BilarteralFilter(BilateralFilterValue):KSIZE = BilateralFilterValue * 20 + 5#后两个参数:空间高斯函数标准差和灰度值相似性高斯函数标准差img4 = cv2.bilateralFilter(img, 5, KSIZE, KSIZE)cv2.imshow(WINDOWNAME, img4)img = cv2.imread('img.jpg')
cv2.namedWindow(WINDOWNAME)
cv2.createTrackbar("Blur", WINDOWNAME, MeanBlurValue, MaxVal, on_MeanBlur)
on_MeanBlur(1)
cv2.createTrackbar("Gauss", WINDOWNAME, GaussianBlurValue, MaxVal, on_GaussianBlur)
on_GaussianBlur(1)
cv2.createTrackbar("Median", WINDOWNAME, MedianBlurValue, MaxVal, on_MedianBlur)
on_MedianBlur(1)
cv2.createTrackbar("Bilateral", WINDOWNAME, BilateralFilterValue, 20, on_BilarteralFilter)
on_BilarteralFilter(1)if cv2.waitKey(0) == 27:cv2.destroyAllWindows()
运行结果:
[1]: 《Python and OpenCV for starter》
[2]: 《Opencv官方教程中文版(For Python)》
这篇关于选取一张图片,通过滑动条控制参数,对图片进行均值滤波,高斯滤波,中值滤波,双波滤波的处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!