文章目录

    • @[toc]
    • 1 基本概念
    • 2 简单阈值处理`cv2.threshold`
    • 3 自适应阈值处理`cv2.adaptiveThreshold`

更多精彩内容
👉内容导航 👈
👉OpenCV开发 👈

1 基本概念

图像阈值处理(Thresholding)是图像处理中的一种基本技术,用于将灰度图像转换为二值图像。通过设定一个阈值,将图像中的像素分为两类:高于阈值的像素和低于阈值的像素。

使用场景

  • 文档图像二值化
  • 图像分割预处理
  • OCR 前处理
  • 去除图像噪声
  • 目标检测预处理

2 简单阈值处理cv2.threshold

cv2.threshold

输入图像:必须为单通道,若为彩色图像需先转换为灰度

函数定义

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

参数详解

  1. src(输入图像)

    • 类型:单通道灰度图像(如 cv2.COLOR_BGR2GRAY 转换后的图像)。
    • 作用:待处理的输入图像,必须为 8-bit32-bit 浮点型
  2. thresh(阈值)

    • 类型floatint
    • 作用:用于与像素值比较的阈值。若像素值大于 thresh,则根据 type 参数处理。
  3. maxval(最大值)

    • 类型floatint
    • 作用:当像素值满足阈值条件时,赋予的新值(仅对部分 type 有效)。
  4. type(阈值类型)

    • 类型:枚举值,决定二值化逻辑。常用选项:

      • cv2.THRESH_BINARY:像素值 > thresh → 设为 maxval,否则设为 0
      • cv2.THRESH_BINARY_INV:像素值 > thresh → 设为 0,否则设为 maxval
      • cv2.THRESH_TRUNC:像素值 > thresh → 截断为 thresh,否则保留原值。
      • cv2.THRESH_TOZERO:像素值 > thresh → 保留原值,否则设为 0
      • cv2.THRESH_TOZERO_INV:像素值 > thresh → 设为 0,否则保留原值。
      • cv2.THRESH_OTSU(需与上述类型组合使用,如 cv2.THRESH_BINARY + cv2.THRESH_OTSU):自动计算最佳阈值(忽略手动设置的 thresh)。

返回值

  • retval:实际使用的阈值。若使用 cv2.THRESH_OTSU,返回自动计算的阈值。
  • dst:处理后的二值化图像。

使用场景

  1. 图像二值化:最常见的使用场景之一。通过设定一个阈值,将图像转换为仅包含黑白两种颜色的二值图像。这对于后续的图像处理步骤(如边缘检测、轮廓提取等)非常有用。
  2. 背景消除:通过阈值处理,可以将图像中的背景部分与前景部分区分开来,便于提取感兴趣的目标。这对于机器视觉任务(如物体识别、跟踪等)至关重要。
  3. 图像分割:利用阈值处理可以对图像进行分割,将图像中具有相似像素值的区域分隔出来。这有助于进一步分析图像中的各个部分。
  4. 特征提取:在某些情况下,阈值处理可以用于提取图像中的某些特定特征,比如颜色特征、纹理特征等。这对于图像分析和模式识别非常有用。
  5. 减少噪声:通过阈值处理,可以将一些小的噪声区域从图像中去除,从而提高图像质量。这通常与形态学操作结合使用,以达到更好的效果。
  6. 图像增强:在某些情况下,阈值处理也可以用于增强图像的某些部分,例如通过调整阈值来增加图像的对比度。
  7. 自动阈值确定:使用 cv2.THRESH_OTSUcv2.THRESH_TRIANGLE 参数,可以让函数自动确定阈值,适用于那些难以手动设定阈值的情况。
  8. 图像预处理:在进行其他复杂的图像处理操作之前,通常会对图像进行预处理,其中阈值处理是一个重要的步骤。它可以简化后续处理的复杂度,并提高处理效果。
  9. 图像阈值化跟踪:在视频处理中,阈值处理可以用来跟踪特定的物体或区域。通过动态调整阈值,可以适应不同的光照条件和背景变化。

3 自适应阈值处理cv2.adaptiveThreshold

OpenCV 中用于自适应阈值化的函数,特别适用于光照不均或背景复杂的图像二值化场景:


adaptiveThreshold

函数定义

dst = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)

参数详解

  1. src(输入图像)

    • 类型:必须为 8-bit 单通道灰度图像(如 cv2.COLOR_BGR2GRAY 转换后的图像)。
    • 作用:待处理的输入图像,不接受浮点型或多通道图像。
  2. maxValue(最大值)

    • 类型intfloat
    • 作用:当像素值满足阈值条件时,赋予的新值(通常为 255)。
  3. adaptiveMethod(自适应方法)

    • 类型:枚举值,决定如何计算局部阈值。可选:

      • cv2.ADAPTIVE_THRESH_MEAN_C:基于邻域块的均值计算阈值(T = 均值 - C)。
    • cv2.ADAPTIVE_THRESH_GAUSSIAN_C:基于邻域块的高斯加权均值计算阈值(T = 高斯加权均值 - C)。

  4. thresholdType(阈值类型)

    • 类型:枚举值,仅支持两种模式:

      • cv2.THRESH_BINARY:像素值 > 阈值 → 设为 maxValue,否则设为 0。
    • cv2.THRESH_BINARY_INV:像素值 > 阈值 → 设为 0,否则设为 maxValue

  5. blockSize(邻域块大小)

    • 类型奇数(如 3, 5, 7)。
    • 作用:计算局部阈值的邻域窗口尺寸,越大越能平滑噪声,但可能丢失细节。
  6. C(常数偏移)

    • 类型intfloat
    • 作用:从计算的阈值中减去的常数,用于微调阈值敏感度(通常取正值降低阈值)。

返回值

  • dst:处理后的二值化图像,尺寸与 src 相同。

注意事项

  1. 输入限制:必须为 8-bit 单通道灰度图像,否则报错。
  2. blockSize 奇偶性:必须为奇数,否则抛出 cv2.error
  3. 参数调优:
    • blockSize:值过小 → 噪声敏感;值过大 → 细节丢失。
    • C 值:正值降低阈值(更易将像素设为 maxValue),负值提高阈值。
  4. 性能:比全局阈值 cv2.threshold 计算开销更大。
  5. 对比全局阈值:
    • 优点:适应局部亮度变化。
    • 缺点:无法处理全局对比度极低的图像(需结合其他预处理)。

使用示例

import numpy as np
import cv2img = cv2.imread('1.png')
img1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将图片转换为灰度图
img2 = cv2.adaptiveThreshold(img1,250,  # 设定阈值,越大越亮cv2.ADAPTIVE_THRESH_MEAN_C,  # 选择方法,这里选择均值cv2.THRESH_BINARY,  # 选择二值化方法3,  # 邻域大小, 越大越模糊, 奇数,通常为3或51) # C值,越大越亮,通常为1
cv2.imshow('image', img2)
cv2.waitKey(0)

示例效果
在这里插入图片描述



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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单串口服务器-工业级串口联网解决方案

在工业自动化、智能电网、环境监测等领域,传统串口设备(如PLC、传感器、仪表等)的网络化升级需求日益增长。博为智能单串口服务器凭借高性能硬件架构、多协议支持和工业级可靠性,为RS485设备提供稳定、高效的TCP/IP网络接入能力&a…

第 9 篇:深入浅出学 Java 语言(JDK8 版)—— 吃透泛型机制,筑牢 Java 类型安全防线

简介:聚焦 Java 泛型这一“类型安全保障”核心技术,从泛型解决的核心痛点(非泛型代码的运行时类型错误、强制类型转换冗余)切入,详解泛型的本质(参数化类型)、核心用法(泛型类/接口/…

MySQL和Redis的数据一致性问题与业界常见解法

一、为什么会出现数据不一致? 根本原因在于:这是一个涉及两个独立存储系统的数据更新操作,它无法被包装成一个原子操作(分布式事务)。更新数据库和更新缓存是两个独立的步骤,无论在代码中如何排列这两个步骤…

coolshell文章阅读摘抄

coolshell文章阅读摘抄打好基础学好英语限制你的不是其它人,也不是环境,而是自己Java打好基础 程序语言:语言的原理,类库的实现,编程技术(并发、异步等),编程范式,设计模…

数据库造神计划第六天---增删改查(CRUD)(2)

🔥个人主页:寻星探路 🎬作者简介:Java研发方向学习者 📖个人专栏:《从青铜到王者,就差这讲数据结构!!!》、 《JAVA(SE)----如此简单&a…

使用Rust实现服务配置/注册中心

Conreg 使用 Rust 实现的配置与注册中心,参考了 Nacos 的设计,简单易用,使用 Raft 保证集群节点数据一致性。 支持的平台: UbuntuCentOS其他常见的 Linux 发行版(我们使用 musl 编译,理论上支持所有主流…

三色标记算法

在 JVM 并发垃圾收集(GC)中,三色标记算法是实现 “GC 线程与用户线程并行执行” 的关键技术,它解决了并发场景下 “如何准确标记存活对象” 的核心问题,是 CMS、G1 等现代收集器的底层基础。一、三色标记的核心&#x…

OpenStack 管理与基础操作学习笔记(一):角色、用户及项目管理实践

OpenStack实验 OpenStack命令 admin-openrc.sh 进入管理员视图查看当前 OpenStack 中的项目列表,验证是否已经登录成功切换用户 修改文件切换用户上传文件切换用户OpenStack 认证管理 实验介绍 通过 OpenStack Dashboard 和 OpenStack CLI 两种方式创建角色、用户、…

直接查找试卷且可以免费下载

有什么网站可以直接查找试卷且可以免费下载? SearXNG开源元搜索引擎 This website shows the SearXNG public instances searx一个可定制的搜索引擎 分享一个基于Blockstack的DApp-searx,一个可定制的搜索引擎。 1- 链接 官网地址:https://searx.worl…

【独立版】智创云享知识付费小程序 v5.0.23+小程序 搭建教程

介绍智创云享知识付费小程序v5.0.23 含PC、小程序、H5 、前端,系统独立版已修复已知bug问题。框架是一款基于ThinkPHP框架开发的虚拟资源知识付费小程序,为广大创业者、自媒体及培训机构提供知识付费、内容付费、资源变现等领域的行业解决方案&#xff1…

布尔运算-区间dp

面试题 08.14. 布尔运算 - 力扣(LeetCode) Solution 这题的思路比较直接,就是枚举最后一个进行计算的运算符,但是在实现过程中需要注意,定义范式f(l,r)表示l到r范围,l和r必须为数字,l1,r-1为运…

MyBatis-Plus 扩展全局方法

1.文件内容package com.ruoyi.business.mybatisplus.base;import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.extension.service.IService;import java.util.List;/*** 扩展的 Service 接口* 所有自定义 Service 接口都需要继承此接口…

13.Linux OpenSSH 服务管理

文章目录Linux OpenSSH 服务管理环境准备OpenSSH 服务介绍SSH 介绍SSH 建立连接的过程加密类型双向加密过程使用 ssh 访问远端CLIssh 工具演示ssh工具配置文件配置 ssh 密钥认证ssh 故障模拟故障模拟排故故障自定义 SSH 服务配置文件禁止 root 登录禁止密码登录只允许特定用户登…

速通ACM省铜第五天 赋源码(MEX Count)

目录 引言: MEX Count 题意分析 逻辑梳理 代码实现 结语: 引言: 本来,今天我是想着出俩题或三题题解的,但是在打第一题的时候就天塌了,导致今天就只搓了一道题,这题的难度在CF中为1300的水准&…

【数据结构与算法-Day 27】堆的应用:从堆排序到 Top K 问题,一文彻底搞定!

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

企业即时通讯保障企业通讯安全,提升企业部门协作效率

在当今数字化转型的大潮中,企业即时通讯软件已从单纯的沟通工具,逐步演变为保障企业数据安全的核心基础设施。吱吱企业即时通讯软件通过“私有化部署全流程加密”的双重机制,为企业构建了一套集“通讯安全”与“部门协作”于一体的数字化解决…

《华为变革法:打造可持续进步的组织》读书笔记

推荐序一:变革是企业活下去的基础(胡彦平)华为前常务副总裁、变革指导委员会成员胡彦平在序言中强调,企业存续的核心命题是应对不确定性,而变革能力是破解这一命题的唯一答案。他以华为 30 余年的发展历程为例&#xf…

第二篇:排序算法的简单认识【数据结构入门】

排序算法的分类标准 时间复杂度分类 a. 简单排序算法:时间复杂度O(n),冒泡排序、选择排序、插入排序; b. 高级排序算法:时间复杂度O(n logn),快速排序、归并排序、堆排序; c. 线性排序算法:时间…

快速掌握Dify+Chrome MCP:打造网页操控AI助手

你是否曾经希望那些强大的开源大模型能更贴合你的专业领域,或者学会模仿你的行文风格?其实,实现这个目标的关键就在于“微调”。曾几何时,微调模型是大公司的专属游戏——动不动就需要几十张GPU和复杂的分布式训练技术。 而现在&…

单词记忆-轻松记忆10个实用英语单词(15)

1. repaint含义:重新油漆 读音标注:/ˌriːˈpeɪnt/ 例句:We need to repaint the walls after the repairs. 译文:修理完成后需要重新粉刷墙壁。 衍生含义:重新绘制(图像场景);翻新…