Python中的OpenCV图像阈值处理和平滑处理详解

 更新时间:2023年08月07日 10:14:14   作者:小白地瓜  
这篇文章主要介绍了Python中的OpenCV图像阈值处理和平滑处理详解,OpenCV是一个跨平台的计算机视觉库,可用于开发实时的图像处理、计算机视觉以及模式识别程序,需要的朋友可以参考下

一、图像的阈值处理

ret, dst = cv2.threshold(src=,thresh=,maxval=,type=)

  • dst:输出图
  • src:输入图,只能是单通道图像,通常来说为灰度图
  • thresh:阈值
  • maxval:当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值
  • type:二值化操作的类型和,包含以下五种
    • cv2.THRESH_BINARY 超过阈值部分取maxval(最大值),否则0
    • cv2.THRESH_BINARY_INV 小于阈值部分取maxval(最大值) 否则0
    • cv2.THRESH_TRUNC 大于阈值部分设为阈值,否则不变
    • cv2.THRESH_TOZERO 大于阈值部分不改变,否则设为0
    • cv2.THRESH_TOZERO_INV 小于阈值部分不改变吗,否则设为0
import cv2
img_h = cv2.imread(r"C:\Users\admin\Desktop\yy.jpg", cv2.IMREAD_GRAYSCALE)
# 超过阈值部分取maxval(最大值),否则0
ret1,img1 = cv2.threshold(img_h,127,255,cv2.THRESH_BINARY)
# 小于阈值部分取maxval(最大值)  否则0
ret2,img2 = cv2.threshold(img_h,127,255,cv2.THRESH_BINARY_INV)
# 大于阈值部分设为阈值,否则不变
ret3,img3 = cv2.threshold(img_h,127,255,cv2.THRESH_TRUNC)
# 大于阈值部分不改变,否则设为0
ret4,img4 = cv2.threshold(img_h,127,255,cv2.THRESH_TOZERO)
# 小于阈值部分不改变吗,否则设为0
ret5,img5 = cv2.threshold(img_h,127,255,cv2.THRESH_TOZERO_INV)
titles = ["ORIGINAL", "BINARY", "BINARY_INV", "TRUNC", "TOZERO", "TOZERO_INV"]
imgs = [img_h,img1,img2,img3,img4,img5]
for i in range(6):
    plt.subplot(2,3,i+1),plt.imshow(imgs[i],"gray")
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()

效果如下

在这里插入图片描述

二、图像的平滑处理

img = cv2.imread(r"C:\Users\admin\Desktop\yy2.jpg", cv2.IMREAD_GRAYSCALE)
# 均值滤波
# 简单的平均卷积操作
# (3,3)为每次处理矩阵的大小
# 比如3*3的矩阵9个数,9个数相加除以9来代替中间点的像素值
blur = cv2.blur(img, (3, 3))
# 方框滤波
# normalize=True时,基本和均值一样,可以选择归一化
# -1 基本为常量
box = cv2.boxFilter(img,-1,(3,3),normalize=True)
# 方框滤波
# normalize=False,容易越界,因为超过255,则就255
# 比如3*3的矩阵9个数,9个数相加代替中间点的像素值,超过255则为255
box = cv2.boxFilter(img,-1,(3,3),normalize=False)
# 高斯滤波
# 卷积核是满足高斯分布,相当于更重视中间的像素值
aussian = cv2.GaussianBlur(img, (5,5), 1)
# 中值滤波
# 相当于用中值代替
# 比如3*3的矩阵9个数,取中值来代替中间点的像素值
median = cv2.medianBlur(img, 5)

到此这篇关于Python中的OpenCV图像阈值处理和平滑处理详解的文章就介绍到这了,更多相关OpenCV图像阈值处理和平滑处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中实例化class的执行顺序示例详解

    Python中实例化class的执行顺序示例详解

    这篇文章主要给大家介绍了关于Python中实例化class的执行顺序的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们随着小编来一起学习学习吧
    2018-10-10
  • Python Apschedule定时任务框架的用法详解

    Python Apschedule定时任务框架的用法详解

    apschedule是一个用python写的定时处理框架,这篇文章主要为大家详细介绍了Apschedule定时任务框架的用法,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-06-06
  • python3 配置logging日志类的操作

    python3 配置logging日志类的操作

    这篇文章主要介绍了python3 配置logging日志类的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python获取中国节假日数据记录入JSON文件

    Python获取中国节假日数据记录入JSON文件

    项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:Python获取中国节假日数据记录入JSON文件
    2025-04-04
  • 十分钟轻松掌握dataframe数据选择

    十分钟轻松掌握dataframe数据选择

    这篇文章主要介绍了十分钟轻松掌握dataframe数据选择,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • python中字符串的常见操作总结(一)

    python中字符串的常见操作总结(一)

    这篇文章主要介绍了python中字符串的常见操作总结,文章通过简单介绍对象的相关展开全文详细内容,需要的朋友可以参考一下
    2022-07-07
  • Python中一般处理中文的几种方法

    Python中一般处理中文的几种方法

    今天小编就为大家分享一篇关于Python中一般处理中文的几种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Matplotlib使用Cursor实现UI定位的示例代码

    Matplotlib使用Cursor实现UI定位的示例代码

    这篇文章主要介绍了Matplotlib使用Cursor实现UI定位的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Python PyCryptodome库介绍与实例教程

    Python PyCryptodome库介绍与实例教程

    PyCryptodome提供了丰富的加密功能,可以满足多种安全需求,本文介绍了几个常见的使用场景,包括对称加密、非对称加密、哈希函数和消息认证码,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • Python logging模块写入中文出现乱码

    Python logging模块写入中文出现乱码

    这篇文章主要介绍了Python logging模块写入中文出现乱码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05

最新评论