当前位置: 首页 > news >正文

OpenCV 阈值处理

一、OpenCV 阈值处理技术

阈值处理基础

阈值处理是将灰度图像转换为二值图像的核心技术,通过设定阈值将像素分为两类(如前景/背景)。数学表达为:
dst(x,y) = maxVal if src(x,y) > thresh else 0

核心作用

  • 简化图像结构,突出目标轮廓
  • 为OCR、边缘检测等任务提供预处理支持
  • 有效降低图像噪声影响

二、OpenCV 阈值处理代码样例

import cv2 as cv# 读取图像文件
img = cv.imread('../Resources/Photos/cats.jpg')
if img is None:print("错误:图像路径无效或文件损坏")exit()
cv.imshow('Cats', img)  # 显示原始图像(窗口标题为'Cats')# 将BGR彩色图像转换为灰度图像
# 参数:
#   img - 原始BGR三通道图像
#   cv.COLOR_BGR2GRAY - 颜色空间转换标志(其他选项:cv.COLOR_BGR2RGB等)
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('Gray', gray)  # 显示灰度图像### 简单阈值处理(全局阈值)###
# 函数原型:retval, dst = cv.threshold(src, thresh, maxval, type)
#   src:输入灰度图像(单通道)
#   thresh:设定的阈值(范围0-255)
#   maxval:当像素值超过阈值时赋予的最大值
#   type:阈值处理类型
# 返回值:
#   retval:实际使用的阈值(与输入thresh相同)
#   dst:阈值处理后的二值图像# 二值化处理(cv.THRESH_BINARY)
# 规则:像素值 > thresh 时设为maxval(255),否则设为0
threshold, thresh = cv.threshold(gray, 150, 255, cv.THRESH_BINARY)
cv.imshow('Simple Thresholded', thresh)  # 显示二值化结果(亮区变白,暗区变黑)# 反二值化处理(cv.THRESH_BINARY_INV)
# 规则:像素值 > thresh 时设为0,否则设为maxval(255)
threshold, thresh_inv = cv.threshold(gray, 150, 255, cv.THRESH_BINARY_INV)
cv.imshow('Simple Thresholded Inverse', thresh_inv)  # 显示反二值化结果(亮区变黑,暗区变白)### 自适应阈值处理(局部动态阈值)###
# 函数原型:dst = cv.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)
#   src:输入灰度图像
#   maxValue:满足条件的像素赋予的最大值
#   adaptiveMethod:自适应算法类型
#       1. cv.ADAPTIVE_THRESH_MEAN_C:邻域内像素均值作为阈值
#       2. cv.ADAPTIVE_THRESH_GAUSSIAN_C:邻域内像素的加权均值(高斯核权重)
#   thresholdType:阈值处理类型(仅支持二值化/反二值化)
#   blockSize:邻域窗口大小(必须为正奇数,如3,5,11)
#   C:从计算阈值中减去的常数(用于微调阈值,可为负数)# 高斯加权自适应二值化(反色)
# 参数说明:
#   cv.ADAPTIVE_THRESH_GAUSSIAN_C:使用高斯加权计算局部阈值
#   cv.THRESH_BINARY_INV:反二值化(效果:背景黑色,目标白色)
#   11:邻域大小(11×11像素块)
#   9:调整常数(增大则阈值降低,更多像素变为白色)
adaptive_thresh = cv.adaptiveThreshold(gray,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY_INV,11,9
)
cv.imshow('Adaptive Thresholding', adaptive_thresh)  # 显示自适应阈值结果# 等待键盘输入(0表示无限等待)
# 按ESC键(ASCII 27)或任意键退出窗口
cv.waitKey(0)
# 销毁所有OpenCV创建的窗口
cv.destroyAllWindows()
http://www.dtcms.com/a/332609.html

相关文章:

  • 基于定制开发开源AI智能名片与S2B2C商城小程序的H5页面小游戏营销模式创新研究
  • 综合案例:Python 函数知识整合 — 学生成绩管理系统
  • fastdds.ignore_local_endpoints 属性
  • 自动化框架pytest(1)
  • Vue3 Element-plus 封装Select下拉复选框选择器
  • Vue3 + Element Plus 实现可搜索、可折叠、可拖拽的部门树组件
  • 基于element-plus的基础表单样式
  • [微服务]ELK Stack安装与配置全指南
  • Pytest项目_day17(随机测试数据)
  • 大模型微调分布式训练-大模型压缩训练(知识蒸馏)-大模型推理部署(分布式推理与量化部署)-大模型评估测试(OpenCompass)
  • 专题:2025跨境电商市场布局、供应链与产业带赋能报告 |附130+份报告PDF、原数据表汇总下载
  • Sparse-ICP—(3) 点到面稀疏迭代最近点算法(matlab版)
  • PDF Replacer:高效便捷的PDF文档内容替换专家
  • 国内多光谱相机做得好的厂家有哪些?-多光谱相机品牌厂家
  • 8月4日实训考察:重庆五一职院走进成都国际影像产业园
  • ffmpeg-调整视频分辨率
  • 网站与政务新媒体自查情况的报告工具功能
  • Web攻防-大模型应用LLM搭建接入第三方内容喂养AI插件安全WiKI库技术赋能
  • 编程练习---邮费计算
  • 计算机网络 THU 考研专栏简介
  • SDN控制器是什么?它在网络里的作用相当于什么?
  • Easy Rules 规则引擎详解
  • 数据结构:二叉树的表示方式(Representation of Binary Trees)
  • 基于MIMO的MATLAB预编码
  • 【Kubernetes知识点问答题】kubernetes 控制器
  • 力扣400:第N位数字
  • JavaScript性能优化30招
  • 「 CentOS7 安装部署k8s」
  • 2025新版 工业级定位系统哪家技术好?
  • 用3D打印重新定义骑行-中科米堆CASAIM自行车座椅个性化设计