【OpenCV】(六)—— 阈值处理
阈值处理(Thresholding)用于将灰度图像转换为二值图像。通过设定一个或多个阈值,可以将图像中的像素分为不同的类别,通常用于分割前景和背景、简化图像、去除噪声等任务。OpenCV 提供了多种阈值处理方法,下面介绍基本阈值处理和自动阈值处理。
基本阈值处理
基本阈值处理方法cv2.threshold
,函数原型如下:
ret, thresh = cv2.threshold(src, thresh, maxval, type)
参数说明:
src
:输入图像,通常是单通道的灰度图像。thresh
:阈值。maxval
:超过或低于阈值时赋予的新值。- type:阈值类型,常见的有以下几种:
cv2.THRESH_BINARY
:如果像素值大于阈值,设置为maxval
;否则设置为 0。cv2.THRESH_BINARY_INV
:如果像素值大于阈值,设置为 0;否则设置为maxval
。cv2.THRESH_TRUNC
:如果像素值大于阈值,设置为阈值;否则保持不变。cv2.THRESH_TOZERO
:如果像素值大于阈值,保持不变;否则设置为 0。cv2.THRESH_TOZERO_INV
:如果像素值大于阈值,设置为 0;否则保持不变。
【示例】
import matplotlib.pyplot as plt
img = cv2.imread('cat.jpg',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 = ['Orininal 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([])print(ret)
运行结果:
自动阈值处理
自适应阈值处理适用于图像中光照不均匀或背景复杂的情况。它会根据图像的局部区域自动计算阈值。
cv2.adaptiveThreshold
函数原型如下:
thresh = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)
参数说明:
src
:输入图像,通常是单通道的灰度图像。maxValue
:超过或低于阈值时赋予的新值。- adaptiveMethod:自适应方法,常见的有:
cv2.ADAPTIVE_THRESH_MEAN_C
:阈值是邻域的平均值减去常数C
。cv2.ADAPTIVE_THRESH_GAUSSIAN_C
:阈值是邻域的加权平均值减去常数C
。
thresholdType
:阈值类型,通常使用cv2.THRESH_BINARY
或cv2.THRESH_BINARY_INV
。blockSize
:邻域大小,必须是奇数。C
:从平均值或加权平均值中减去的常数。
【示例】
# 自动阈值处理
# 读取图像并转换为灰度图像
img = cv2.imread('cat.jpg', cv2.IMREAD_GRAYSCALE)# 应用自适应阈值处理
adaptive_mean = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
adaptive_gaussian = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)# 显示结果
cv2.imshow('Adaptive Mean Thresholding', adaptive_mean)
cv2.imshow('Adaptive Gaussian Thresholding', adaptive_gaussian)cv2.waitKey(0)
相关文章:

【OpenCV】(六)—— 阈值处理
阈值处理(Thresholding)用于将灰度图像转换为二值图像。通过设定一个或多个阈值,可以将图像中的像素分为不同的类别,通常用于分割前景和背景、简化图像、去除噪声等任务。OpenCV 提供了多种阈值处理方法,下面介绍基本阈…...

重学SpringBoot3-集成Redis(九)之共享Session
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(九)之共享Session 1. 为什么需要 Session 共享2. Spring Session 和 Redis 的集成2.1. 引入依赖2.2. 配置 Redis 连接…...

Linux:信号保存与处理
使用kill -l命令查看信号: 信号量和信号确实一点关系没有 信号是操作系统发出的进程与进程之间的通知于中断,是进程之间时间异步通知的一种方式 先了解同步通信:同步通信是一种比特同步通信技术,要求发收双方具有同频同相的同步…...
工具方法 - 可选的一些AI聊天机器人
1, ChatGPT OpenAI https://chatgpt.com/ 2, Microsoft Copilot Microsoft Copilot: 你的 AI 助手 Microsoft Copilot: 你的 AI 助手 3, HuggingChat Hugging Face – The AI community building the future. https://huggingface.co/ https://huggingface.co/chat/ 4,…...
YOLOv11改进策略【卷积层】| CVPR-2023 ScConv:即插即用,减少冗余计算并提升特征学习
一、本文介绍 本文记录的是利用ScConv优化YOLOv11的目标检测网络模型。深度神经网络中存在大量冗余,不仅在密集模型参数中,而且在特征图的空间和通道维度中。ScConv模块通过联合减少卷积层中空间和通道的冗余,有效地限制了特征冗余,本文利用ScConv模块改进YOLOv11,提高了…...

总结拓展十四:批次管理(2)
1、批次管理后台配置 1.1 批次管理级别配置(T-code:OMTC) ——路径:IMG->后勤-常规->批次管理->指定级别并激活状态管理 1.2 批次状态管理配置(T-code:OMTC) ——路径:IMG->后勤-常规->批次管理->指定级别并激活状态管理 批状态管…...

架构设计笔记-18-安全架构设计理论与实践
知识要点 常见的安全威胁: 信息泄露:信息被泄露或透露给某个非授权的实体。破坏信息的完整性:数据被非授权地进行增删、修改或破坏而受到损失。拒绝服务:对信息或其他资源的合法访问被无条件地阻止。攻击者向服务器发送大量垃圾…...
Python网络爬虫
随着互联网的迅猛发展,数据成为了新的“石油”。人们对于信息的需求日益增涨,尤其是在市场分析、学术研究和数据挖掘等领域。网络爬虫作为一种自动提取网络数据的技术,因其强大的能力而备受关注。而Python,凭借其简洁的语法和丰富…...
38. 外观数列
目录 一、问题描述 二、解题思路 三、代码 四、复杂度分析 一、问题描述 「外观数列」是一个数位字符串序列,由递归公式定义: countAndSay(1) "1"countAndSay(n) 是 countAndSay(n-1) 的行程长度编码。 行程长度编码(RLE&am…...
Android中的三种数据存储方式
目录 1.文件存储 1)内部存储 1--MODE_PRIVATE: 2--MODE_APPEND: 3--MODE_WORLD_READABLE: 4--MODE_WORLD_WRITEABLE: 5--简单使用 3)外部存储 4)内部读取 4)外部读取 2.SharePreferences存储 1)基本概念 2)…...
VS2022中Qt环境配置步骤
VS2022中Qt环境配置步骤 一、安装QT 下载QT:从QT官网上下载QT,在安装过程中,可以根据自己的需求选择适合的QT版本。若不确定,建议选择最新版本,这有助于提高开发效率。 二、安装Visual Studio 2022 选择组件&#…...
【前端】 常用的版本控制符号汇总
前端的版本控制符主要用于管理前端项目中依赖包的版本。它们通常在package.json文件中定义,帮助开发者指定所需的库和框架的版本范围。以下是一些关键概念: 版本控制符号详解: 1. 依赖管理 在前端开发中,依赖管理工具ÿ…...
OWASP Top 10 漏洞详解:基础知识、面试常问问题与实际应用
OWASP(开放式Web应用程序安全项目)是一个全球性非营利组织,致力于提高软件安全性。OWASP Top 10 是其发布的十大Web应用程序安全风险列表,广泛应用于安全领域的学习和实践。本文将详细介绍OWASP Top 10 漏洞的基础知识、面试常见问…...

实景三维赋能自然资源精细化管理创新
在自然资源管理领域,如何实现精细化、高效化管理一直是我们面临的挑战。随着实景三维技术的兴起,这一挑战迎来了新的解决方案。今天,我们将探讨实景三维技术如何赋能自然资源的精细化管理。 1. 实景三维技术概述 实景三维技术是一种集成了遥…...

Science Robotics 通过新材料打造FiBa软机器人 可实现四种形态进化
近几年由于材料科学的进步,软机器人相关技术近几年研究成果显著,与传统的刚性机器人相比,软机器人的设计灵感来源于自然界中的生物系统,如蠕虫、章鱼、壁虎和青蛙等。这些生物利用柔软、有弹性的材料,在复杂环境中展现…...

C++ 的特性可以不用在主函数中调用
写完代码,都找不到从哪里进去...

香港大学神作 LightRAG 横空出世!AI 检索生成系统革命,秒懂复杂信息,动态数据无所遁形!
❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 微信订阅号|搜一搜&…...

云栖实录 | 智能运维年度重磅发布及大模型实践解读
本文根据2024云栖大会实录整理而成,演讲信息如下: 演讲人: 钟炯恩 | 阿里云智能集团运维专家 张颖莹 | 阿里云智能集团算法专家 活动: 2024 云栖大会 AI 可观测专场 -智能运维:云原生大规模集群GitOps实践 2024 …...
Vue3中防止按钮重复点击的方式
本文列两种方式,推荐第一种,经过长时间测试第二种防止的还是会漏,这里也列一下 ①使用定时器(推荐) 判断3秒钟之内方法只能执行一次 <el-button click"handleClick" type"primary" :loading…...

windows主机重新安装zabbix agent提示please clear the previous agent registration
目录 1. Zabbix Agent1.1 错误提示 2. 解决方法2.1 管理员运行cmd2.2 可以正常安装 1. Zabbix Agent 1.1 错误提示 2. 解决方法 2.1 管理员运行cmd 输入 sc.exe delete “Zabbix Agent” 或者 sc.exe delete “Zabbix Agent 2” 如果成功会出现“[SC] DeleteService SUCCES…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...