OpenCV4,快速入门,第二讲:图像色彩空间转换

embedded/2025/2/6 12:14:05/

请添加图片描述

文章目录

  • 引言
  • 一、色彩空间概述
    • 1.1 RGBHSV的区别
    • 1.2 HSV的详细含义
    • cvtColor
  • 二、cvtColor函数详解
    • 2.1 函数原型
    • 2.2 参数说明
    • 2.3 使用示例
  • 三、imwrite函数详解
    • 3.1 函数原型
    • 3.2 参数说明
    • 3.3 使用示例
  • 四、完整示例代码
  • 五、应用场景与注意事项
    • 5.1 HSV的典型应用
    • 5.2 注意事项
  • 结语


引言

在计算机视觉和图像处理领域,色彩空间转换是一项基础而重要的任务。通过合理选择色彩空间,我们可以更高效地实现目标检测、图像分割和特征提取等功能。本文将深入讲解OpenCV中HSV色彩空间的原理,并详细解析cvtColor和imwrite两个核心API的使用方法。


一、色彩空间概述

RGBHSV_8">1.1 RGBHSV的区别

  • RGB:通过红(Red)、绿(Green)、蓝(Blue)三个通道的组合表示颜色,适合显示系统,但对光照敏感。
  • HSV:由色相(Hue)、饱和度(Saturation)、明度(Value)三个维度构成,更贴近人类对颜色的感知,常用于颜色识别和分割。

HSV_12">1.2 HSV的详细含义

  • Hue(色相):表示颜色类型,范围是 0 ~ 180(OpenCV中8位图像将0~360缩放到此范围)。
  • Saturation(饱和度):颜色的纯度,0(灰色)~ 255(完全饱和)。
  • Value(明度):颜色亮度,0(黑色)~ 255(最亮)。

注意:HSV在OpenCV中的范围与理论值不同,需特别注意。

cvtColor


二、cvtColor函数详解

2.1 函数原型

void cv::cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0
);

2.2 参数说明

  • src:输入图像(如BGR格式的Mat对象)。
  • dst:输出图像,保存转换后的结果。
  • code:颜色空间转换代码,常用值:
    • COLOR_BGR2HSV:BGR转HSV
    • COLOR_HSV2BGRHSV转BGR
    • 其他选项(如COLOR_BGR2GRAY)
  • dstCn:输出图像的通道数,默认0表示自动推导。

2.3 使用示例

#include <opencv2/o

http://www.ppmy.cn/embedded/160021.html

相关文章

【大数据技术】Spark分布式实现词频统计(hadoop+python+spark)

Spark分布式实现词频统计(hadoop+python+spark) 搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell) 搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) 本机PyCharm远程连接CentOS虚拟机(Python) 搭建完全分布式高可用大数据集群(Scala+Spark) 在阅读…

【多线程】线程池核心数到底如何配置?

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 前置回顾2. 动态线程池2.1 JMX 的介绍2.1.1 MBeans 介绍 2.2 使用 JMX jconsole 实现动态修改线程池2.2.…

jvm - GC篇

如何减慢一个对象进入老年代的速度&#xff0c;如何降低GC的次数 堆内存细分 年轻代&#xff08;Young Generation&#xff09;&#xff1a; 新创建的对象首先被分配在年轻代中。年轻代又被进一步划分为一个Eden区和两个Survivor区&#xff08;通常称为S0和S1&#xff09;。…

PythonFlask框架

文章目录 处理 Get 请求处理 POST 请求应用 app.route(/tpost, methods[POST]) def testp():json_data request.get_json()if json_data:username json_data.get(username)age json_data.get(age)return jsonify({username: username测试,age: age})从 flask 中导入了 Flask…

Vue-data数据

目录 一、Vue中的data数据是什么&#xff1f;二、data支持的数据类型有哪些&#xff1f; 一、Vue中的data数据是什么&#xff1f; Vue中用到的数据定义在data中。 二、data支持的数据类型有哪些&#xff1f; data中可以写复杂类型的数据&#xff0c;渲染复杂类型数据时只要遵…

Go语言指针的解引用和间接引用

在 Go 语言中&#xff0c;"解引用"和"间接引用"是与指针相关的概念。 解引用 (Dereferencing)&#xff1a; 解引用是指通过指针访问它所指向的变量的值。在 Go 中&#xff0c;使用星号&#xff08;*&#xff09;来解引用一个指针。 例如&#xff1a; v…

如何使用 Python 和 SQLAlchemy 结合外键映射来获取其他表中的数据

在使用 Python 和 SQLAlchemy 时&#xff0c;结合外键映射可以让你在查询时轻松地获取其他表中的数据。SQLAlchemy 提供了丰富的 ORM&#xff08;对象关系映射&#xff09;功能&#xff0c;可以让你通过定义外键关系来查询并获取关联的数据。下面我会演示如何设置外键关系&…

Electron使用WebAssembly实现CRC-8 MAXIM校验

Electron使用WebAssembly实现CRC-8 MAXIM校验 将C/C语言代码&#xff0c;经由WebAssembly编译为库函数&#xff0c;可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-8 MAXIM格式校验的方式。 CRC-8 MAXIM校验函数WebAssembly源文件 C语言实现C…