Python OpenCV对图像进行模糊处理详解流程
作者:Hong_Youth 发布时间:2022-05-16 03:54:19
其实我们平时在深度学习中所说的卷积操作,在 opencv 中也可以进行,或者说是类似操作。那么它是什么操作呢?它就是图像的模糊(滤波)处理。
均值滤波
使用 opencv 中的cv2.blur(src, ksize)
函数。其参数说明是:
src
: 原图像ksize
: 模糊核大小
原理:它只取内核区域下所有像素的平均值并替换中心元素。3x3 标准化的盒式过滤器如下所示:
特征:核中区域贡献率相同。
作用:对于椒盐噪声的滤除效果比较好。
# -*-coding:utf-8-*-
"""
File Name: image_deeplearning.py
Program IDE: PyCharm
Date: 2021/10/17
Create File By Author: Hong
"""
import cv2 as cv
def image_blur(image_path: str):
"""
图像卷积操作:设置卷积核大小,步距
:param image_path:
:return:
"""
img = cv.imread(image_path, cv.IMREAD_COLOR)
cv.imshow('input', img)
# 模糊操作(类似卷积),第二个参数ksize是设置模糊内核大小
result = cv.blur(img, (5, 5))
cv.imshow('result', result)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == '__main__':
path = 'images/2.png'
image_blur(path)
结果展示:
高斯滤波
高斯滤波使用的是cv2.GuassianBlur(img, ksize,sigmaX,sigmaY)
函数。
说明:sigmaX
,sigmaY
分别表示 X,Y 方向的标准偏差。如果仅指定了sigmaX
,则sigmaY
与sigmaX
相同;如果两者都为零,则根据内核大小计算它们。
特征:核中区域贡献率与距离区域中心成正比,权重与高斯分布相关。
作用:高斯模糊在从图像中去除高斯噪声方面非常有效。
def image_conv(image_path: str):
"""
高斯模糊
:param image_path:
:return:
"""
img = cv.imread(image_path, cv.IMREAD_COLOR)
cv.imshow('img', img)
# 高斯卷积(高斯滤波), 可以设置ksize,必须为奇数,不为0时,后面的步骤不起作用;也可以设置成(0,0),然后通过sigmaX和sigmaY计算标准偏差
result = cv.GaussianBlur(img, (0, 0), 15)
cv.imshow('result', result)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == '__main__':
path = 'images/2.png'
image_conv(path)
结果展示:
高斯双边滤波
双边滤波(模糊)使用的是cv2.bilateralFilter(img,d, sigmaColor, sigmaSpace)
函数。
说明:d
为邻域直径,sigmaColor
为空间高斯函数标准差,参数越大,临近像素将会在越远的地方越小。
sigmaSpace
灰度值相似性高斯函数标准差,参数越大,那些颜色足够相近的的颜色的影响越大。
双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数。
特征:处理耗时。
作用:在滤波的同时能保证一定的边缘信息。
# 边缘保留滤波器——高斯双边模糊
def image_bifilter(image_path: str):
"""
高斯双边模糊
:param image_path: 图片文件
:return: 无返回值
"""
img = cv.imread(image_path, cv.IMREAD_COLOR)
cv.imshow('input', img)
# 第三个参数是设置色彩、第四个参数是设置图像坐标
result = cv.bilateralFilter(img, 0, 50, 10)
cv.imshow('result', result)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == '__main__':
path = 'images/2.png'
image_bifilter(path)
结果展示:
来源:https://blog.csdn.net/hallobike/article/details/120873754
猜你喜欢
- 问题你想从一个简单的XML文档中提取数据。解决方案可以使用 xml.etree.ElementTree 模块从简单的XML文档中提取数据。为
- 本文实例讲述了Python画图的基本方法。分享给大家供大家参考,具体如下:Python:使用matplotlib绘制图表python绘制图表
- jquery获取img的src值实例介绍 https://www.jb51.net/article/154746.htm获取: $(&quo
- 1 获取当前完整时间1.1 now()函数select now();输出:2023-02-15 10:46:171.2 sysdate()函
- python 打开浏览器,可以做简单的刷网页的小程序。仅供学习,别用非法用途。python的webbrowser模块支持对浏览器进行一些操作
- 一般说到组件,我首先想到的是弹窗,其他就大脑空白了。因为觉得这个是在项目中最常用的功能,提取出来方便复用的才是组件~然而我才发现这个想法是有
- 所谓匿名函数,即是不需要定义函数,像表达式一样使用,不需要函数名(很多时候名字让我很困扰),一些简单的函数简单化, 举个例子我需要两个整数相
- 本文实例讲述了PHP判断密码强度的方法。分享给大家供大家参考,具体如下:一、php页面$score = 0;if(!empty($_GET[
- 先看一下总体效果:上传文件做了大小和类型的限制,在动图中无法展现出来。使用file类型的input实现选择本地文件但是浏览器原生的文件上传按
- 好久没有学python了,反正各种理由吧(懒惰总会有千千万万的理由),最近网上学习了一下selenium,实现了一个简单的自动登录网页,具体
- 进程进程是操作系统分配资源的基本单元,是程序隔离的边界。进程和程序程序只是一组指令的集合,它本身没有任何运行的含义,它是静态的。进程程序的执
- 这是一个非常愚蠢的错误debug的时候要好好看error信息提醒自己切记好好对待error!切记!切记!------------------
- 假如你拥有一个庞大的网站,内容又多,那么来访者往往很难找到自己所需要的东东,这时候你就需要一个站内搜索来帮助来访者更快的找到索要的资料了!现
- #coding:utf-8"""__new__和__init__到底是怎么一回事,看下面的代码如果类没有定义_
- 提示:本文多图,请手机端注意流量。前言利用python做图片识别,识别提取图片中的文字会有很多方法,但是想要简单一点怎么办,那就可以使用te
- 如何使用pycharm连接SQL Sever:应该是所有的错误都经历了(不得不说挺崩溃的)Tip:不要跳步操作。步骤一:先检测自己的SQL
- python3中str默认为Unicode的编码格式Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk
- 本文实例讲述了javascript自动生成包含数字与字符的随机字符串的方法。分享给大家供大家参考。具体如下:这里主要用到Math.rando
- 案例一 导入图片思路: 1.导入库 2.加载图片 3.创建窗口 4.显示图片 5.暂停窗口 6.关闭窗口# 1.导入库import cv2#
- 前言pycharm是python的一个商业的集成开发工具,本人感觉做python开发还是很好用的,django是一个很流行的python w