OpenCV学习(七)——图像阈值

news2025/7/15 11:23:10

图像阈值

      • 7.1 简单阈值
      • 7.2 自适应阈值

7.1 简单阈值

cv2.threshold(src, thresh, maxval, type, dst=None)图像阈值

  • src:源图像,应该为灰度图。
  • thresh:阈值,像素值小于阈值,则将其设置为0,否则将其设置为最大值。
  • maxval:分配给超过阈值的像素值的最大值。
  • type:提供了不同类型的阈值
    • cv.THRESH_BINARY
    • cv.THRESH_BINARY_INV
    • cv.THRESH_TRUNC
    • cv.THRESH_TOZERO
    • cv.THRESH_TOZERO_INV
  • dst:输出图像

该方法返回两个输出。第一个是使用的阈值,第二个输出是阈值后的图像。

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 读取图像(灰度图)
img = cv2.imread('gradient.png', 0)

# 阈值,返回的图像
ret, thresh1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)
titles = ['Original Image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]
for i in range(6):
    plt.subplot(2, 3, i + 1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()

请添加图片描述

7.2 自适应阈值

cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)自适应阈值化

  • src:源图像
  • maxValue:超过阈值的部分取值是多少
  • adaptiveMethod:在一个邻域内计算阈值所采用的算法
    • ADAPTIVE_THRESH_MEAN_C:领域的平均值
    • ADAPTIVE_THRESH_GAUSSIAN_C:领域的高斯均值
  • thresholdType:这是阈值类型
    • THRESH_BINARY
    • THRESH_BINARY_INV
  • blockSize:计算单位是像素的邻域块大小选择,这是局部邻域大小,3、5、7等
  • C:偏移值调整量,用均值和高斯计算阈值后,再减或加这个值就是最终阈值。

返回输出是阈值后的图像

import cv2
from matplotlib import pyplot as plt

# 读取图像
img = cv2.imread('lena.jpg', 0)

# 简单阈值
# threshold(src, thresh, maxval, type, dst=None)
ret, thresh1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 自适应阈值
# adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)
thresh2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 2)
thresh3 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 5, 2)

titles = ['Original Image', 'BINARY', 'ADAPTIVE_THRESH_MEAN_C', 'ADAPTIVE_THRESH_GAUSSIAN_C']
images = [img, thresh1, thresh2, thresh3]
for i in range(4):
    plt.subplot(2, 2, i + 1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1158440.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 Curl 和 DomCrawler 下载抖音视频链接并存储到指定文件夹

项目需求 假设我们需要从抖音平台上下载一些特定的视频,以便进行分析、编辑或其他用途。为了实现这个目标,我们需要编写一个爬虫程序来获取抖音视频的链接,并将其保存到本地文件夹中。 目标分析 在开始编写爬虫之前,我们需要了…

2021年09月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 使用map函数可以实现列表数据元素类型的转换,而无需通过循环。则将列表L[‘1’,‘3’,‘5’,‘7’,‘9’]转…

deeplog打印损失

deeplog 即 日志异常检测工具,该工具使用torchtrain整合训练代码 step1 查找文件 找到安装包 torchtrain, 打开 module.py 文件 删除文件夹 __pycache__ step2 修改文件 # Loop over each epochdef fit(self, X, y,epochs 10,batch_size 32,learn…

一图看懂CodeArts Release三大特性,带你玩转发布管理服务

体验通道: 发布管理 CodeArts Release-华为云

基于深度学习的语音识别算法的设计与实现

收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、课题内容二、需求分析2.1 算法需求分析2.2 语音录制2.3 声学模型2.4 语言模型2.5 训练集和测试集2.6 深度神经网络 三 算法设计原理3.1 语音识别系统3.1.1 声学模型3.1.2 语言模型3.1.3 发音词典 四 简单问答…

树结构及其算法-二叉树节点的插入

目录 树结构及其算法-二叉树节点的插入 C代码 树结构及其算法-二叉树节点的插入 二叉树节点插入的情况和查找相似,重点是插入后仍要保持二叉查找树的特性。如果插入的节点已经在二叉树中,就没有插入的必要了,如果插入的值不在二叉树中&…

AI开源 - LangChain UI 之 Flowise

原文:AI开源 - LangChain UI 之 Flowise 一、Flowise 简介 Flowise 是一个为 LangChain 设计的用户界面(UI),使得使用 LangChain 变得更加容易(低代码模式)。 通过拖拽可视化的组件,组建工作流,就可以轻…

基于GB28181-2022实现web无插件播放H265视频

目前发布的GB28181-2022增加了对前端设备视频H265编码格式的支持,所以实现国标平台通过浏览器对H265视频流的无插件的解码播放将是未来的趋势。 目前大多的方案都是通过平台端把H265转码为H264,再推送到web前端进行解码播放,这种方式因为需要…

基于深度学习的水果识别 计算机竞赛

1 前言 Hi,大家好,这里是丹成学长,今天做一个 基于深度学习的水果识别demo 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/pos…

Web3时代:探索DAO的未来之路

Web3 的兴起不仅代表着技术进步,更是对人类协作、创新和价值塑造方式的一次重大思考。在 Web3 时代,社区不再仅仅是共同兴趣的聚集点,而变成了一个价值交流和创新的平台。 去中心化:超越技术的革命 去中心化不仅仅是 Web3 的技术…

【运维心得】系统欢迎界面卡住的罪魁祸首

系统在登录过程中,有个欢迎界面,一般情况下,即使性能再查的电脑,大概1~3分钟也就进入系统桌面了。但这次的问题比较奇怪,始终停留欢迎界面,让人误以为是系统问题。 但到最后出现了反转&#xf…

商城性能测试LoadRunner快速上手教学

软件介绍 Virtual User Generator ,记录用户流程并创建一个自动化性能测试脚本Controller,单一控制点,轻松、有效地控制所有Vuser,执行期间监控场景性能Analysis,生成性能测试报告,以图表形式呈现。 由于…

一键添加色彩变幻效果,视频剪辑从未如此简单!

在视频制作过程中,给视频添加特效是必不可少的环节。而其中,色彩变幻效果作为一种常用的特效,能够为视频增添独特的氛围和视觉冲击力。然而,对于许多初学者来说,如何批量给视频添加色彩变幻效果特效功能却是一个难题。…

从0到1了解metasploit上线原理

在渗透的过程中拿到权限后通常会进行上线cs/msf的操作,我们了解上线的原理后,无论是对编写远控,还是绕过杀软帮助都很大。 前言 在渗透的过程中拿到权限后通常会进行上线cs/msf的操作,我们了解上线的原理后,无论是编…

不容错过的2023年度线框图工具Top 8

线框图工具可以快速呈现设计师的灵感。在任何项目的开始阶段,选择一个方便的线框图工具都是最好的选择。如今,线框图工具的出现并不夸张。各种工具都很容易获得,但选择太多确实很容易给设计师的选择带来困难。 买东西都讲性价比,…

最新 IntelliJ IDEA 旗舰版和社区版下载安装教程(图解)

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

一台服务器安装两个mysql、重置数据库用于测试使用

文章目录 一、切数据库数据存储文件夹已经存在数据库数据文件夹新建数据库数据文件夹 二、安装第二个mysql安装新数据库初始化数据库数据启动数据库关闭数据库 三、mysqld_multi单机多实例部署参考文档 一、切数据库数据存储文件夹 这个方法可以让你不用安装新的数据库&#x…

信号灯集,消息队列

信号灯集 1、概念 信号灯(semaphore),也叫信号量。它是不同进程间或一个给定进程内部不同线程间同步的机制;System V的信号灯是一个或者多个信号灯的一个集合。其中的每一个都是单独的计数信号灯。而Posix信号灯指的是单个计数信号灯。 通过信号灯集实现…

双网卡下,如何指定网卡进行通讯

背景 LabVIEW进行网络TCP网络通讯,通过WIFI进行数据传输。刚好工作站有两个网口,一个连接外网,一个连接无线路由器,然后数据节点可以连接到无线路由。但时LabVIEW默认运行的时候,显示的ip地址是外网的,那这…

主播直播美颜SDK:提升颜值的秘诀

当下,主播们往往依赖于主播直播美颜SDK,这个技术工具为他们提供了一个让自己看起来更好看的机会。本文将深入探讨主播直播美颜SDK的工作原理、应用和影响,揭示提升颜值的秘诀。 一、主播直播美颜SDK是什么? 主播直播美颜SDK是一…