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

OpenCV C++ 二值图像处理:阈值化技术全解析

二值图像(只有黑白两种像素值的图像)是许多高级图像处理任务的基础,它能简化图像数据、突出目标区域。本章将系统讲解图像阈值化的基本原理、全局阈值分割与自适应阈值分割的实现方法,以及各类方法的适用场景与参数调优技巧。

一、图像阈值化操作

图像阈值化是将灰度图像转换为二值图像的过程,通过设定一个或多个阈值,将像素值分为两类(通常是 0 和 255)。这一操作能有效分离目标与背景,简化图像分析。

1.1 阈值化基本原理

阈值化的核心思想是:

  • 设定一个阈值thresh
  • 对于每个像素,根据其灰度值与阈值的关系赋予新值
  • 结果图像仅包含两个像素值(如 0 和 255),形成二值图像

数学描述:

当像素值 > thresh:赋予值 maxval
当像素值 ≤ thresh:赋予值 0(或其他值,取决于阈值类型)

1.2 OpenCV 阈值化函数threshold

OpenCV 提供threshold函数实现各种阈值化操作,函数原型:

double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type);
  • src:输入图像(必须为单通道灰度图)
  • dst:输出二值图像
  • thresh:阈值(取值范围 0~255)
  • maxval:最大值(通常为 255,用于定义超过阈值时的像素值)
  • type:阈值化类型(决定像素值与阈值比较后的处理方式)
  • 返回值:实际使用的阈值(对于自动阈值算法)

1.3 常用阈值化类型及实现

OpenCV 支持 5 种基本阈值化类型,适用场景各有不同:

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;void thresholdTypesDemo(const Mat& gray) {Mat dst1, dst2, dst3, dst4, dst5;double thresh = 127;double maxval = 255;// 1. 二进制阈值:超过阈值取maxval,否则取0threshold(gray, dst1, thresh, maxval, THRESH_BINARY);// 2. 反二进制阈值:超过阈值取0,否则取maxvalthreshold(gray, dst2, thresh, maxval, THRESH_BINARY_INV);// 3. 截断阈值:超过阈值取阈值,否则保持原值threshold(gray, dst3, thresh, maxval, THRESH_TRUNC);// 4. 阈值化为0:超过阈值保持原值,否则取0threshold(gray, dst4, thresh, maxval, THRESH_TOZERO);// 5. 反阈值化为0:超过阈值取0,否则保持原值threshold(gray, dst5, thresh, maxval, THRESH_TOZERO_INV);// 显示结果imshow("原图", gray);imshow("THRESH_BINARY", dst1);imshow("THRESH_BINARY_INV", dst2);imshow("THRESH_TRUNC", dst3);imshow("THRESH_TOZERO", dst4);imshow("THRESH_TOZERO_INV", dst5);
}int main() {Mat img = imread("test.jpg");if (img.empty()) {cout << "图像加载失败!" << endl;return -1;}// 转换为灰度图(阈值化操作必须输入单通道图像)Mat gray;cvtColor(img, gray, COLOR_BGR2GRAY);thresholdTypesDemo(gray);

文章转载自:

http://wVKC6G6R.hxgLy.cn
http://K9IczsQq.hxgLy.cn
http://rbVoZdtI.hxgLy.cn
http://wK7GJrzD.hxgLy.cn
http://qwTEL8Yr.hxgLy.cn
http://RNOd332A.hxgLy.cn
http://5b9Pxzky.hxgLy.cn
http://y9d2qJ8w.hxgLy.cn
http://7HU6lYKc.hxgLy.cn
http://nDIgfJgv.hxgLy.cn
http://EjMOPr4Z.hxgLy.cn
http://qaPVTpvy.hxgLy.cn
http://BXjdfYw5.hxgLy.cn
http://cKx6cDAZ.hxgLy.cn
http://5UPEwRqR.hxgLy.cn
http://OX623Jd8.hxgLy.cn
http://WiijBPUK.hxgLy.cn
http://eSc0iePw.hxgLy.cn
http://mhOZsUT9.hxgLy.cn
http://sImcn1F1.hxgLy.cn
http://9vfSLBxK.hxgLy.cn
http://Jv3e7E3v.hxgLy.cn
http://NeXFzyvr.hxgLy.cn
http://0NkvzE75.hxgLy.cn
http://Afjlf0pV.hxgLy.cn
http://koGX8reI.hxgLy.cn
http://3CKhuK6A.hxgLy.cn
http://AsNRvLbS.hxgLy.cn
http://bqlihLYa.hxgLy.cn
http://GEEPtdsr.hxgLy.cn
http://www.dtcms.com/a/373249.html

相关文章:

  • OpenCV C++ 形态学分析:从基础操作到高级应用
  • 区块链里的 “信标” 是啥?
  • ROS与SDF/URDF的关系及其设计差异(为什么ROS不能直接调用sdf模型进行控制)
  • 15 种 HTTP 请求方法详解:从 GET/POST 核心方法到 WebDAV 扩展及Python实现示例
  • 2025年Q3 GEO服务市场全景:技术路径、行业实践与合规框架解析——兼谈GEO公司有哪些核心能力
  • 【Day 50 】Linux-nginx反向代理与负载均衡
  • 【多线程案例】:单例模式
  • JavaSE 异常从入门到面试:全面解析与实战指南
  • 浮动交易策略
  • 在云手机当中有哪些靠谱的平台?
  • django跨域配置
  • 工控机创新驱动为工业升级注入科技强心剂
  • AI Agents with n8n: 10+ 自动化创意路线图
  • 【计算机视觉】图像中的高频信息,和低频信息指的是什么?
  • 光伏助力碳中和:智慧运营平台如何精准计算与追踪减排贡献?
  • 计算机视觉 (CV) 基础:图像处理、特征提取与识别
  • 网络身份安全防线:身份证实名认证接口-网络社交身份安全
  • 某互联网大厂的面试go语言从基础到实战的经验和总结
  • 软件设计师备考-(十六)数据结构及算法应用(重要)
  • flutter日期选择国际化支持
  • 最短路算法和最小生成树算法详解
  • 2005–2021年中国城市级终端能源消费(含可再生能源)综合数据集
  • Redis入门(部署、持久化、缓存问题)
  • 聊一聊 .NET 中的 CompositeChangeToken
  • 视觉语言模型应用开发——Qwen 2.5 VL模型视频理解与定位能力深度解析及实践指南
  • 深入理解 MDC(Mapped Diagnostic Context):日志记录的利器
  • 工业相机如何通过光度立体成像技术实现高效精准的2.5D缺陷检测
  • qt+halcon开发相机拍照软件步骤
  • cs61A lab01
  • 大数据毕业设计选题推荐-基于大数据的国家医用消耗选品采集数据可视化分析系统-Hadoop-Spark-数据可视化-BigData