OpenCV 开发 -- 图像阈值处理


### 文章目录

  • [@[toc]](#文章目录 @[toc] 1 基本概念 2 简单阈值处理cv2.threshold 3 自适应阈值处理cv2.adaptiveThreshold)
  • [1 基本概念](#文章目录 @[toc] 1 基本概念 2 简单阈值处理cv2.threshold 3 自适应阈值处理cv2.adaptiveThreshold)
  • [2 简单阈值处理`cv2.threshold`](#文章目录 @[toc] 1 基本概念 2 简单阈值处理cv2.threshold 3 自适应阈值处理cv2.adaptiveThreshold)
  • [3 自适应阈值处理`cv2.adaptiveThreshold`](#文章目录 @[toc] 1 基本概念 2 简单阈值处理cv2.threshold 3 自适应阈值处理cv2.adaptiveThreshold)
更多精彩内容
👉内容导航 👈
👉OpenCV开发 👈

1 基本概念

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

使用场景

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

2 简单阈值处理cv2.threshold

cv2.threshold

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

函数定义

python 复制代码
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

函数定义

python 复制代码
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. 对比全局阈值:
    • 优点:适应局部亮度变化。
    • 缺点:无法处理全局对比度极低的图像(需结合其他预处理)。

使用示例

python 复制代码
import numpy as np
import cv2

img = 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或5
                             1) # C值,越大越亮,通常为1
cv2.imshow('image', img2)
cv2.waitKey(0)

示例效果



相关推荐
闲人编程2 小时前
图像去雾算法:从物理模型到深度学习实现
图像处理·人工智能·python·深度学习·算法·计算机视觉·去雾
咔咔学姐kk2 小时前
大模型微调技术宝典:Transformer架构,从小白到专家
人工智能·深度学习·学习·算法·transformer
Caaacy_YU3 小时前
多模态大模型研究每日简报【2025-09-10】
论文阅读·人工智能·深度学习·机器学习·计算机视觉
云边云科技3 小时前
门店网络重构:告别“打补丁”,用“云网融合”重塑数字竞争力!
大数据·人工智能·安全·智能路由器·零售
山海青风3 小时前
12 Prompt 模板化与参数化
人工智能·prompt
山海青风3 小时前
11 Prompt 工程进阶:Few-shot 与 Chain-of-Thought
人工智能·prompt
爱看科技3 小时前
AI/AR智能眼镜步入全球破圈增长期,五大科技大厂入局加剧生态市场角逐
人工智能·科技·ar
人有一心3 小时前
深度学习里的树模型TabNet
人工智能·深度学习
强盛小灵通专卖员3 小时前
边缘计算设备NPU的加速原理
人工智能·深度学习·边缘计算·sci·中文核心·小论文