news 2026/6/5 5:06:07

OpenCV 学习9-灰度转黑白二值图像

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenCV 学习9-灰度转黑白二值图像

1、为什么需要图像二值化?

场景说明
文字识别(OCR)当需要提取图片(比如扫描的文件、发票图片、身份证)中的文字内容时,将图像二值化后,提高字符边缘清晰度,减少背景干扰,用于给OCR程序 识别
条形码 / 二维码识别快速识别黑白条纹图案
医学图像处理比如X光片中提取骨骼轮廓
目标检测与分割定位图像中的特定区域,可用于质检环节检测缺陷区域

将复杂的灰度或彩色图像简化为只有黑白两种状态的图像(0 和 255)

图像二值化可达到 “化繁为简”,在保留关键结构的同时去除冗余信息,在 OCR、目标分割、形态学处理等场景中非常有效。
当需要从图像中快速提取有|没有在哪里信息时,就可以尝试使用二值化处理。

2、图像二值化(Binarization)函数 cv2.threshold()

cv2.threshold() 是 OpenCV的图像二值化函数,将灰度图像转换为黑白二值图像。
通过设定一个阈值(threshold),将像素点分为两类:

  • >阈值为某一个值(如 255,白色)
  • ≤ 阈值为另一值(如 0,黑色)

2.1 函数定义

retval, dst = cv2.threshold(src, thresh, maxval, type)
  • 返回值
    dst:新的二值图像
    retval: 实际使用的阈值
  • 参数说明
参数类型说明
srcNumPy 数组必须是灰度图像
threshfloat设定的阈值,比如128
maxvalfloat当像素满足条件时,设置的最大值(通常为 255)
typeint阈值类型
  • 阈值类型 type 说明
类型名称含义
cv2.THRESH_BINARY二进制阈值化if pixel > thresh: 255 else 0
cv2.THRESH_BINARY_INV反向二进制if pixel > thresh: 0 else 255
cv2.THRESH_TRUNC截断if pixel > thresh: thresh else pixel
cv2.THRESH_TOZERO低于阈值清零if pixel <= thresh: 0 else pixel
cv2.THRESH_TOZERO_INV高于阈值清零if pixel > thresh: 0 else pixel
cv2.THRESH_OTSU自动计算最优阈值(基于 Otsu 算法)需和上述类型 按位或组合使用,
如cv2.THRESH_BINARY + cv2.THRESH_OTSU

2.2 OTSU

OTSU(大津算法) 是一种经典的自动图像二值化方法,用于在灰度图像中自动选择最佳阈值,将图像分为前景和背景两部分。由日本学者 大津展之(Nobuyuki Otsu) 1979年提出。

算法解决的主要问题是:在不知道阈值的情况下,如何自动找出一个“最优”阈值来分割图像?

OTSU 算法的思路是:
最大化类间方差(Between-class Variance),让前景(目标)和背景之间的差异尽可能大,从而使分割最清晰。

2.3 代码示例

importcv2importnumpyasnpimportos# 1.读取图像img_path="img/dog.jpg"ifnotos.path.exists(img_path):raiseFileNotFoundError(f"未找到图像文件{img_path}")img=cv2.imread(img_path,cv2.IMREAD_GRAYSCALE)thresh,img1=cv2.threshold(img,128,255,cv2.THRESH_BINARY)cv2.imshow("Original",img)cv2.imshow("threshold",img1)cv2.waitKey(0)cv2.destroyAllWindows()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 14:52:27

手机背光模组设计

手机背光模组设计&#xff1a;从原理到实操步骤手机背光模组是屏幕显示的“光源核心”&#xff0c;核心目标是高均匀度&#xff08;≥90%&#xff09;、薄型化&#xff08;厚度&#xff1c;2mm&#xff09;、低功耗。以下是从原理到软件实操的完整设计指南。一、手机背光模组的…

作者头像 李华
网站建设 2026/5/31 19:14:43

基于SpringBoot + Vue的网上学生评教系统的设计与实现

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 &#x1f49b;博主介绍&#…

作者头像 李华
网站建设 2026/6/5 17:20:31

基于细粒度情感建模的语音大模型生成与感知

摘要 本文针对现有语音合成技术在情感表现力上存在的控制粗糙、维度单一、自然度受限等问题,提出了AffectGPT-Speech——一个基于细粒度情感建模的语音大语言模型。本研究的核心贡献在于构建了一个统一的混合情感表征空间,该空间融合了心理学维度的Valence-Arousal-Dominanc…

作者头像 李华
网站建设 2026/5/31 0:40:41

一文带你认识护网行动是什么?参加需要具备哪些条件?

网络安全领域&#xff0c;“HW 行动” &#xff08;网络安全实战攻防演练&#xff09;作为国家层面组织的网络安全攻防演练&#xff0c;是我国提升关键信息基础设施安全防护能力的核心举措&#xff0c;其体系化的运作模式和实战化的演练机制具有重要意义。 HW 行动的具体时间通…

作者头像 李华
网站建设 2026/6/5 12:29:49

⭐力扣刷题:字符串解码

题目&#xff1a; 给定一个经过编码的字符串&#xff0c;返回它解码后的字符串。 编码规则为: k[encoded_string]&#xff0c;表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的&#xff1b;输入字符串中没有额外的空…

作者头像 李华
网站建设 2026/6/3 2:54:47

开始使用 Elastic Agent Builder 和 Strands Agents SDK

作者&#xff1a;来自 Elastic Jonathan Simon 学习如何使用 Elastic Agent Builder 创建一个 agent&#xff0c;然后探索如何通过 A2A 协议&#xff0c;在 Strands Agents SDK 的编排下使用该 agent。 Elasticsearch 与行业领先的 Gen AI 工具和提供商有原生集成。查看我们的网…

作者头像 李华