入门OpenCV:图像阈值处理

基本概念

图像阈值是一种简单、高效的图像分割方法,目的是将图像转换成二值图像。这个过程涉及比较像素值和阈值,根据比较结果来确定每个像素点的状态(前景或背景)。图像阈值在处理二维码、文本识别、物体跟踪等领域中非常有用。本博客旨在简介OpenCV中的阈值处理方法,并提供实现代码,适合初学者学习。

理论介绍:

1. 阈值类型:

  • 二进制阈值:如果像素值高于阈值,则赋予一个新值(通常是白色),否则赋予另一个值(通常是黑色)。
  • 反二进制阈值:与二进制阈值相反,如果像素值高于阈值,则赋予黑色,否则赋予白色。
  • 截断阈值:如果像素值高于阈值,就赋予阈值,否则保持不变。
  • 阈值化为零:如果像素值高于阈值,则保持不变,否则赋予零。
  • 反阈值化为零:与阈值化为零相反,如果像素值高于阈值,则赋予零,否则保持不变。

2. 自适应阈值:

在不同区域的光照条件不一致的情况下,自适应阈值可以更好地处理图像,它会基于图像上的小区域(邻域)而不是整个图像来计算阈值。

示意图

放大了看看:

把关键的几个放大看看:


程序展示

Python程序

python 复制代码
# -*- coding: utf-8 -*-
"""
Created on Sat Feb 17 21:26:05 2024

@author: 李立宗

公众号:计算机视觉之光

知识星球:计算机视觉之光

"""


import cv2

# 读取图像
image = cv2.imread('lena.bmp', cv2.IMREAD_GRAYSCALE)

# 应用全局阈值处理
ret, binary_thresh = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)

# 应用自适应阈值处理
adaptive_thresh = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)

# 显示原始图像,全局阈值处理结果和自适应阈值处理结果
cv2.imshow('Original Image', image)
cv2.imshow('Binary Threshold', binary_thresh)
cv2.imshow('Adaptive Threshold', adaptive_thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果

相关知识点

理解并实现OpenCV中的图像平滑技术

OpenCV中的边缘检测技术及实现

OpenCV识别人脸案例实战

参考文献

1、OpenCV轻松入门

李立宗,OpenCV轻松入门,电子工业出版社,2023

2、计算机视觉40例

李立宗,计算机视觉40例,电子工业出版社,2022

相关推荐
大模型真好玩16 分钟前
架构大突破! DeepSeek-V3.2发布,五分钟速通DeepSeek-V3.2核心特性
人工智能·python·deepseek
春末的南方城市21 分钟前
苏大团队联合阿丘科技发表异常生成新方法:创新双分支训练法,同步攻克异常图像生成、分割及下游模型性能提升难题。
人工智能·科技·深度学习·计算机视觉·aigc
OpenCSG29 分钟前
超越颠覆:AI与Web3如何为传统金融的“华兴资本们”提供新生之路
人工智能·金融·web3
2401_8414956438 分钟前
【自然语言处理】Universal Transformer(UT)模型
人工智能·python·深度学习·算法·自然语言处理·transformer·ut
大刘讲IT1 小时前
下一代固态硬盘引入HBM缓存技术的深度可行性分析
人工智能·经验分享·缓存·ai
WeiJingYu.1 小时前
P3.7计算机视觉
人工智能·opencv·计算机视觉
胡耀超1 小时前
4、存储系统架构 - 从机械到闪存的速度革命
服务器·人工智能·架构·gpu·储存·闪存
新加坡内哥谈技术1 小时前
Airbnb内部核心键值存储系统 Mussel 已完成从 v1 到 v2 的重构升级
人工智能
zzywxc7872 小时前
AI 开发工具全景指南:从编码辅助到模型部署的全流程实践
大数据·人工智能·低代码·机器学习·golang·自动化·ai编程
liliangcsdn2 小时前
mac基于mlx运行轻量级模型gemma-3-270m
人工智能·macos