当前位置: 首页 > article >正文

python学opencv|读取图像(五十六)使用cv2.GaussianBlur()函数实现图像像素高斯滤波处理

【1】引言

前序学习了均值滤波和中值滤波,对图像的滤波处理有了基础认知,相关文章链接为:

python学opencv|读取图像(五十四)使用cv2.blur()函数实现图像像素均值处理-CSDN博客

python学opencv|读取图像(五十五)使用cv2.medianBlur()函数实现图像像素中值滤波处理-CSDN博客

在此基础上,我们可以进入高斯滤波的学习,此时需要使用cv2.GaussianBlur()函数。

【2】官网教程

点击下方链接,直达cv2.GaussianBlur()函数的官网教程:

OpenCV: Image Filtering

官网页面对cv2.GaussianBlur()函数的说明为:

图1   cv2.GaussianBlur()函数的官网教程

官网页面对cv2.GaussianBlur()函数的参数说明为:

void cv::GaussianBlur  (

InputArray src,                                                                    #输入图像

OutputArray dst,                                                                 #输出图像

Size ksize,                                                                          #像素核

double sigmaX,                                                                #卷积核水平方向标准差,可选参数

double sigmaY = 0,                                                          #卷积核竖直方向标准差,可选参数

int borderType = BORDER_DEFAULT,                           #边界样式,可选参数

AlgorithmHint hint = cv::ALGO_HINT_DEFAULT )         #实现修改标志,无需关注

【3】代码测试

首先是引入模块和相关图像:

import cv2 as cv  # 引入CV模块

# 读取图片
srcm = cv.imread('srcx.png')  # 读取图像srcx.png

然后是对图像进行高斯滤波处理:

#滤波计算
src1 = cv.GaussianBlur(srcm,(3,3),0,0)  # 图像取平均值,像素核大小为(3,3)
src2 = cv.GaussianBlur(srcm,(5,5),0,0)  # 图像取平均值,像素核大小为(5,5)
src3 = cv.GaussianBlur(srcm,(7,7),0,0)  # 图像取平均值,像素核大小为(7,7)

之后显示图像:

# 显示结果
cv.imshow('srcm ', srcm)
cv.imshow('src1 ', src1)
cv.imshow('src2 ', src2)
cv.imshow('src3 ', src3)
cv.imwrite('src1g.png',src1)
cv.imwrite('src2g.png',src2)
cv.imwrite('src3g.png',src3)
# 窗口控制
cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

程序运行使用的相关图像为:

图2  初始图像scrx.png

图3  高斯滤波图像scr1.png

图4  高斯滤波图像scr2.png

图5  高斯滤波图像scr3.png

和调用cv2.blur()函数使用均值滤波处理,调用cv2.medianBlur()函数进行中值滤波处理一样,调用cv.GaussianBlur()函数进行高斯滤波处理后,由图2到图5可见,随着像素核的增大,图像越来越模糊。这提醒我们,控制像素核的大小,可以进一步控制图像的模糊程度。

【4】细节说明

调用cv2.medianBlur()函数进行中值滤波时,使用的像素核只需要写出边长n,但这个边长也应该是奇数,cv2.medianBlur()函数会自动根据这个边长划定一个正方形的像素核。

调用cv2.blur()函数进行均值滤波和调用cv2.GaussianBlur()函数进行高斯滤波处理时,均需要给出(nXn)大小的像素核,这个n应使用奇数。

像素核使用奇数大小会比较好,是因为奇数大小会在最中间围成一个方格,这个方格就是核心方格,滤波计算的值直接赋给这个核心方格。

图6 图像滤波技术对比

【5】总结

掌握了使用python+opencv实现调用cv2.GaussianBlur()函数进行高斯滤波处理图像的技巧。

 


http://www.kler.cn/a/532699.html

相关文章:

  • [蓝桥杯 2024 省 B] 好数
  • 996引擎-怪物:Lua 刷怪+清怪+自动拾取
  • 我们信仰AI?从神明到人工智能——信任的进化
  • Python网络自动化运维---批量登录设备
  • AJAX笔记原理篇
  • 【产品经理学习案例——AI翻译棒出海业务】
  • 线程创建与管理 - 创建线程、线程同步(C++)
  • git进阶--6---git stash
  • 一文了解边缘计算
  • 数据降维技术研究:Karhunen-Loève展开与快速傅里叶变换的理论基础及应用
  • RabbitMQ深度探索:简单实现 MQ
  • nlp文章相似度
  • STM32 串口发送与接收
  • 硬件产品经理:需求引力模型(DGM)
  • 用 OpenCV 画圆:让图像处理更简单有趣
  • 昇思打卡营第五期(MindNLP特辑)番外:硅基流动 x 华为云DeepSeek V3 API推理MindTinyRAG
  • 排序算法--冒泡排序
  • 最新版Node.js下载安装指定版本图文版教程(非常详细)
  • 动态获取脚本名称作为日志文件的名称
  • 要将DsspSeek微调为行业专用的大模型,需要结合领域知识、数据优化和模型调整策略。
  • 【Linux系统】SIGCHLD 信号(选学了解)
  • 基于微信小程序的私家车位共享系统设计与实现(LW+源码+讲解)
  • linux内核源代码中__init的作用?
  • 【仿12306项目】基于SpringCloud,使用Sentinal对抢票业务进行限流
  • Linux01——初识Linux
  • 【Python】NumPy(一):数据类型、创建数组及基本操作