news 2026/6/22 4:54:16

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/6/21 22:44:07

基于SpringBoot + Vue的马拉松报名及成绩管理系统设计与实现

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

作者头像 李华
网站建设 2026/6/20 21:53:43

大一新生逆袭年入百万!“天才小火炬” 名号,是怎么来的?

2024网安界跑出一匹引人瞩目的黑马 仅用一年挖洞收入突破100万的百万赏金猎人 2024腾讯SRC年榜第一 而就在这一年前 他仅仅是一个因为挂科留级的大一“新生” 他说&#xff0c;他是天才小火炬 2024 创造挖洞奇迹 2024年&#xff0c;网络安全领域迎来了一位耀眼的新星&#xff…

作者头像 李华
网站建设 2026/6/21 5:59:03

【高危漏洞预警】Kubernetes服务器端请求伪造漏洞(CVE-2025-13281)

漏洞描述:Kubеrnеtеѕ是一个开源的容器编排平台,用于自动化应用程序的部署、扩展与管理。它通过kubе-арiѕеrvеr提供RESTful接口,统一管控集群状态、配置与策略,是云原生架构的核心基础设施Kubеrnеtеѕ kubе-арiѕеrvеr在解析匿名请求与Wеbhооk令牌认证链的…

作者头像 李华
网站建设 2026/6/21 18:59:42

边缘AI混合模型LFM2-350M:轻量化部署的技术突破

边缘AI混合模型LFM2-350M&#xff1a;轻量化部署的技术突破 【免费下载链接】LFM2-350M 项目地址: https://ai.gitcode.com/hf_mirrors/LiquidAI/LFM2-350M 边缘计算设备面临算力有限、功耗约束和部署复杂等挑战&#xff0c;如何在这些场景中实现高效的轻量化AI部署成为…

作者头像 李华
网站建设 2026/6/21 19:10:32

15-3.【Linux系统编程】进程信号 - 信号捕捉(信号捕捉流程、操作系统运行方式及流程、内核态和用户态、可重入函数、volatile防止优化)

目录 4. 信号捕捉4.1 信号捕捉的流程&#xff08;CPU在用户态与内核态之间切换&#xff09;4.2 操作系统是怎么运行的4.2.1 硬件中断4.2.2 时钟中断4.2.3 死循环4.2.4 软中断4.2.5 缺页中断&#xff1f;内存碎片处理&#xff1f;除零野指针错误&#xff1f; 4.3 用户态和内核态…

作者头像 李华