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

05 OpenCV色彩空间处理

色彩空间(Color Space)是一种用于描述颜色的数学模型,它将颜色表示为多维向量或坐标,通常由三个或四个独立的分量来表示。不同的色彩空间在颜色的表示方式、可表达颜色的范围、计算速度和应用场景等方面存在差异,不同的色彩空间有不同的作用,主要包括以下几点:

  1. 色彩空间可以提高图像处理的准确性。例如,由于人类的视觉对亮度(L)和颜色(a、b)的感知不同,Lab色彩空间可以提高图像处理算法在颜色边缘的准确性。

  2. 色彩空间可以扩展可表示的颜色范围。例如,RGB色彩空间只能表示一部分可见光谱范围内的颜色,而HSV色彩空间可以表示更广泛的颜色范围,使得在计算机视觉和图像处理中更加灵活。

  3. 色彩空间可以降低计算复杂度。例如,在颜色量化和压缩中使用YUV色彩空间可以减少计算量,提高图像处理的速度。

  4. 色彩空间可以满足不同的应用需求。例如,RGB色彩空间广泛用于计算机显示器和数字相机中,HSV色彩空间用于图像分割和特征提取,YUV色彩空间用于视频编码和传输等。

常见的色彩空间包括RGB、HSV、HSL、Lab、YUV等,每种色彩空间都有其独特的特点和应用场景。选择合适的色彩空间可以更好地解决图像处理和计算机视觉中的问题,提高图像处理的效率和准确性。

1 色彩空间基础知识

1.1 GRAY色彩空间

GRAY是一种单通道的灰度色彩空间,其代表了图像中每个像素的亮度值(Luminance),而不考虑颜色的饱和度和色调。GRAY色彩空间的亮度值通常使用 8 位无符号整数来表示,取值范围为 0~255,其中 0 表示黑色,255 表示白色。

GRAY色彩空间广泛应用于图像处理、计算机视觉和机器学习等领域中。相比于其他色彩空间,GRAY色彩空间有以下几个优点:

  1. GRAY色彩空间计算简单,只需考虑像素的亮度值,因此处理速度较快。

  2. GRAY色彩空间对图像的光照变化、色彩变化等因素具有较好的鲁棒性。

  3. GRAY色彩空间可以提取图像的纹理信息,对于纹理分析、边缘检测和形状识别等方面具有优势。

  4. GRAY色彩空间可以被看作是其他色彩空间(如RGB、HSV等)的一种简化形式,可以方便地进行色彩空间的转换。

在使用GRAY色彩空间进行图像处理时,常用的操作包括图像增强、图像滤波、图像分割、形态学处理和特征提取等。例如,通过对GRAY色彩空间的图像应用滤波算法,可以去除图像中的噪声和干扰,提高图像质量和辨识度;通过对GRAY色彩空间的图像进行形态学处理,可以提取图像的轮廓和纹理信息,实现图像分割和形状识别等功能。

Gray与RGB的转换方式为:
gray=0.299R+0.587G+0.114Bgray = 0.299 R + 0.587 G + 0.114 B gray=0.299R+0.587G+0.114B

1.2 HSV色彩空间

HSV(Hue-Saturation-Value)是一种基于人类视觉感知的颜色模型,它将颜色表示为三维向量或坐标,其中包括色相(Hue)、饱和度(Saturation)和亮度(Value)三个分量。

  • 色相(Hue)表示颜色的基本属性,是色彩的本质特征,可以用角度度量(0~360°),对应于色轮上的位置。常见的色相包括红、黄、绿、青、蓝、紫等。

  • 饱和度(Saturation)表示颜色的纯度或深浅程度,是指该颜色与灰色的比例,取值范围为0~1。当饱和度为1时,颜色最鲜艳、最纯粹;当饱和度为0时,颜色最暗淡、最接近灰色。

  • 亮度(Value)表示颜色的明暗程度,是指该颜色的亮度,取值范围为0~1。当亮度为1时,颜色最亮;当亮度为0时,颜色最暗。

HSV色彩空间的使用有以下优点:

  1. 相对于RGB色彩空间,HSV色彩空间更符合人类视觉感知,能更好地描述颜色的主要属性和纯度。

  2. HSV色彩空间可更好地区分相似颜色,便于颜色选择、匹配和分类。

  3. HSV色彩空间可以方便地调整颜色的属性,如改变色相、饱和度和亮度,实现图像增强、特效处理和色彩平衡等功能。

在图像处理、计算机视觉和计算机图形学等领域中,HSV色彩空间常用于图像分割、特征提取、目标跟踪、目标检测、图像检索等方面。例如,在基于颜色的目标跟踪中,可以使用HSV色彩空间提取出目标的颜色信息,结合运动模型进行跟踪。

2 色彩空间的Python操作

2.1 空间转换

使用cv2.cvtColor()函数实现色彩空间的转换。
cv2.cvtColor() 是 OpenCV 中用于颜色空间转换的函数,它可以将一幅图像从一个颜色空间转换到另一个颜色空间。

cv2.cvtColor(src, code[, dst[, dstCn]]) 函数的参数说明如下:

  • src:需要转换的原始图像,可以是 numpy 数组、Mat 对象或图像文件名。
  • code:颜色空间转换的标志,可以使用预定义的颜色空间标志,如 cv2.COLOR_BGR2GRAY 表示将 BGR 色彩空间转换为 GRAY 色彩空间;也可以使用任意的两个自定义颜色空间的转换标志,如 cv2.COLOR_RGB2HSV 表示将 RGB 色彩空间转换为 HSV 色彩空间。
  • dst:可选参数,表示输出图像,其类型与原始图像的类型相同。
  • dstCn:可选参数,表示输出图像的通道数,当源图像和目标图像的通道数不同时,需要指定该参数。

cv2.cvtColor() 函数常用的颜色空间转换标志包括:

  • cv2.COLOR_BGR2GRAY:将 BGR 色彩空间转换为 GRAY 色彩空间。
  • cv2.COLOR_BGR2RGB:将 BGR 色彩空间转换为 RGB 色彩空间。
  • cv2.COLOR_BGR2HSV:将 BGR 色彩空间转换为 HSV 色彩空间。
  • cv2.COLOR_RGB2GRAY:将 RGB 色彩空间转换为 GRAY 色彩空间。
  • cv2.COLOR_RGB2BGR:将 RGB 色彩空间转换为 BGR 色彩空间。
  • cv2.COLOR_RGB2HSV:将 RGB 色彩空间转换为 HSV 色彩空间。
  • cv2.COLOR_GRAY2BGR:将 GRAY 色彩空间转换为 BGR 色彩空间。
  • cv2.COLOR_HSV2BGR:将 HSV 色彩空间转换为 BGR 色彩空间。

2.2 按颜色提取

cv2.inRange() 是 OpenCV 中用于提取图像中特定颜色区域的函数,它可以将一幅图像中所有颜色值在特定范围内的像素提取出来,生成一个二值掩模(mask)。

cv2.inRange(src, lowerb, upperb[, dst]) 函数的参数说明如下:

  • src:输入图像,可以是 numpy 数组、Mat 对象或图像文件名。
  • lowerb:代表颜色范围下限的数组或标量值,形状与输入图像相同。使用HSV格式。
  • upperb:代表颜色范围上限的数组或标量值,形状与输入图像相同。使用HSV格式。
  • dst:可选参数,表示输出的二值掩模,其大小与输入图像相同。

cv2.inRange() 函数的工作原理是,对于输入图像的每个像素,将其颜色值与 lowerbupperb 定义的颜色范围进行比较。如果该像素的颜色值在范围内,则该像素在输出的二值掩模中对应的像素值为 255,否则为 0。因此,输出的二值掩模中的像素值只有 0 和 255 两种取值。通过生成的掩膜,可以实现对图像的提取。
实例代码如下

import cv2  
import numpy as np  # 读入图像  
img = cv2.imread('lenacolor.png')  # 定义红色区域的范围  
lower_red = np.array([0, 0, 150])  
upper_red = np.array([100, 100, 255])  # 提取红色区域  
mask = cv2.inRange(img, lower_red, upper_red)  # 将掩模应用到原图像  
result = cv2.bitwise_and(img, img, mask=mask)  # 显示结果  
cv2.imshow('original', img)  
cv2.imshow('mask', mask)  
cv2.imshow('result', result)  
cv2.waitKey(0)  
cv2.destroyAllWindows()

image.png

相关文章:

05 OpenCV色彩空间处理

色彩空间(Color Space)是一种用于描述颜色的数学模型,它将颜色表示为多维向量或坐标,通常由三个或四个独立的分量来表示。不同的色彩空间在颜色的表示方式、可表达颜色的范围、计算速度和应用场景等方面存在差异,不同的…...

【CS224图机器学习】task1 图机器学习导论

前言:本期学习是由datawhale(公众号)组织,由子豪兄讲解的202302期CS224图机器学习的学习笔记。本次学习主要针对图机器学习导论做学习总结。1.什么是图机器学习?通过图这种数据结构,对跨模态数据进行整理。…...

Powershell Install SQL Server 2022

前言 SQL Server 2022 (16.x) 在早期版本的基础上构建,旨在将 SQL Server 发展成一个平台,以提供开发语言、数据类型、本地或云环境以及操作系统选项。 SQL Server Management Studio (SSMS) 是一种集成环境,用于管理从 SQL Server 到 Azure SQL 数据库的任何 SQL 基础结构…...

Jetson NX2 装机过程

1.固态硬盘安装完成后,系统配置 df -h 查看硬盘使用情况 2.查看Jetson NX的IP地址,以下两个都行 ifconfig ip address show 3.Jetson NX2安装arm64的annaconda3,安装有问题报错illegal instruction,未解决。 4.VNC远程登录 …...

初始C++(四):内联函数

文章目录一.内联函数概念二.内联函数用法三.内联函数的特性四.内联函数和宏一.内联函数概念 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。 二.内联函…...

九、初识卷积

文章目录1、通过边缘检测认识卷积2、Padding3、Strid Convelution4、RGB图像的卷积THE END1、通过边缘检测认识卷积 \qquad在使用神经网络进行图像识别时,神经网络的前几层需要完成对图像的边缘检测任务,所谓的边缘检测就是让计算机识别出一张图片的垂直…...

【Linux】【编译】编译调试过程中如何打印出实际的编译命令

🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd🌐系列专栏:Linux技术&…...

linux安装jdk

step1 下载jdk 到下面的网站下载需要的jdk安装包版本。 Java Downloads | Oracle step2 复制到opt目录 其中user_name对应自己的home目录的用户文件夹 sudo cp /home/user_name//home/czh/Downloads/jdk-17_linux-x64_bin.tar.gz /opt/ step3 到opt目录解压安装包&#xf…...

迅为iTOP-3A5000龙芯开发板安装UOS操作系统

3A5000板卡采用全国产龙芯3A5000处理器,基于龙芯自主指令系统(LoongArch),市面上龙芯3A5000主板价格都在上万元,可以说是非常贵了, 迅为全新推出了款千元内的iTOP-3A5000开发板,这款板卡各方面的配置也是第…...

Firefox 110, Chrome 110, Chromium 110 官网离线下载 (macOS, Linux, Windows)

Mozilla Firefox, Google Chrome, Chromium, Apple Safari 请访问原文链接:https://sysin.org/blog/chrome-firefox-download/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 天下只剩三种(主流&am…...

如何使用ArcGIS转换坐标

1.概述大家都知道ArcGIS提供了坐标转换功能,在我们手里的数据坐标系千差万别,经常会遇到转换坐标的时候,那么是否可以用ArcGIS进行转换?答案是肯定的,但是转换的过程比较复杂,这里为大家介绍一下转换的方法…...

链表基本原理

链表基本原理1.链表1.1 基本原理1.2 链表大O记法表示2. 链表操作2.1 读取2.2 查找2.3 插入2.4 删除3.链表代码实现1.链表 1.1 基本原理 节点 组成链表的数据格子不是连续的。可以分布在内存的各个位置。这种不相邻的格子就叫结点。每个结点保存数据还保存着链表里的下一结点的…...

基于JAVA+SpringBoot+Vue+ElementUI中学化学实验室耗材管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 当前,中学…...

1.输入子系统学习-struct input_dev-2023.02

内核版本:4.4.194 平台相关:rk3399 目前主要是看的触摸屏的代码 目录 一、include/linux/input.h(struct_input_dev) 二、结构体的注释部分(百度翻译) 三、Documentation/input/event-codes.txt&…...

解决:PDFBox报的java.io.IOException: Missing root object specification in trailer

文章目录问题描述原因分析解决方案问题描述 使用pdfbox类库操作pdf文件时,遇到下面的报错信息: java.io.IOException: Missing root object specification in trailer PDFBox参考: https://pdfbox.apache.org/ Apache PDFBox 库是一个开源的…...

MAC OSX安装Python环境 + Visual Studio Code

MAC上开发python怎么能少得了python3环境呢,而安装python3环境的方式也有多种,这里仅选用并记录本人认为比较方便的方式 安装Homebrew Homebrew是macOS 缺失的软件包管理器, 使用它可以在MAC上安装很多没有预装的东西,详细说明可…...

音乐 APP 用户争夺战,火山引擎 VeDI 助力用户体验升级!

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 国内数字音乐市场正在保持稳定增长。 根据华经产业研究院数据报告显示,2020 年数字音乐市场规模为 357.3 亿元,到 2022 年市场规模已增长至 482.7 …...

CAP和BASE理论

CAP理论CAP是 Consistency、Availability、Partition tolerance 三个词语的缩写,分别表示一致性、可用性、分区容忍性。它指出一个分布式计算系统不可能同时满足以下三点:• 一致性(Consistency) :等同于所有节点访问同…...

基于商品理解的成交能力和成交满意度优化在Lazada的实践

作者:马蕊 Lazada推荐算法团队 在Lazada各域推荐场景中,既有优质商品优质卖家不断涌现带来的机会,也有商品质量参差带来的问题。如何才能为用户提供更好的体验,对卖家变化行为进行正向激励呢?下面本文将为大家分享我们…...

idea推送镜像到desktop报错:Cannot run program “docker-credential-desktop“ 系统找不到指定的文件。

windows Docker 搭建仓库 打开docker desktop 。 打开windows cmd窗口或powershell窗口。 输入"docker run -d -p 5000:5000 --name test registry:2 "运行一个名字叫test的registry容器。 idea配置springboot项目的docker插件 在pom.xml中的plugins中加入下面代码…...

CANN/asc-devkit向量最小值函数

asc_min 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/ca…...

别再只用Matplotlib画图了!用Python这3个库(SciPy, NumPy, Scikit-learn)给你的数据曲线做个‘美容’

Python数据平滑三剑客:用Savitzky-Golay、插值与滑动平均打造专业级图表 当你面对满是噪点的折线图时,是否想过这些锯齿状的波动正在掩盖数据的真实故事?就像摄影师不会直接发布未经修饰的RAW格式照片,数据科学家也需要掌握图表美…...

Java版Dify SDK:构建AI应用的高效开发指南

1. 项目概述:为什么我们需要一个Java版的Dify SDK?如果你正在用Java构建AI应用,并且已经接触过Dify这个开源的LLM应用开发平台,那你大概率会遇到一个痛点:官方SDK主要面向Python和JavaScript生态。当你想在Spring Boot…...

ESPAsyncWebServer库在Arduino IDE下的完整安装与避坑指南(附依赖库下载)

ESPAsyncWebServer库在Arduino IDE下的完整安装与避坑指南 第一次接触ESPAsyncWebServer时,我花了整整一个下午才把环境配置成功。作为过来人,我深知新手在Arduino IDE中安装这个库会遇到哪些"坑"——从依赖库版本不匹配到文件路径错误&#x…...

2026年小程序多少钱对比:精选5大权威推荐帮你选对平台

小程序开发方案的选择直接影响功能匹配度与成本效益,2026年主流服务商主要分为模板化与定制化两类路径。本文将从开发费用构成、五大平台核心方案及选择策略三方面展开分析,帮助您快速定位适合自身业务阶段与预算的选项。内容涵盖基础功能解析、价格对比…...

31_AI短片实战第四弹:主观视角空间控制与分屏快速剪辑的AI生成策略(附提示词)

文章目录 一、第九镜:前方巨大峡谷——主观视角的空间精确控制 镜头设定 为什么这个镜头很难 迭代修正全记录 主观视角生成黄金法则 二、第十分镜:快速剪辑风格分屏——怪兽逼近与油门踩到底 镜头设定 尝试一次性生成 最终方案:拆分生成,后期合成 什么时候应该“拆开做”?…...

从Eclipse转战IDEA?这份无缝迁移指南和习惯养成清单请收好

从Eclipse到IDEA:开发者高效迁移实战手册 第一次打开IntelliJ IDEA的Eclipse转岗开发者,往往会被它精致的界面和丰富的功能所震撼,但随之而来的是各种不适应——"我的项目结构怎么不见了?""这个快捷键怎么和Eclips…...

Gemini3.1Pro成本优化实战指南

在做 2026 年的多模态项目时,大家最关心的往往不是“能不能用”,而是“怎么用得更划算”。如果你正在对接不同模型、比较价格与可用性,先把计费规则与调用链路梳理清楚,会省下大量试错成本。你也可以把 KULAAI(dl.877a…...

3步解锁知网文献:caj2pdf开源工具让你的学术阅读无界

3步解锁知网文献:caj2pdf开源工具让你的学术阅读无界 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换,成功与否,皆是玄学。 项目地址: https://gitcode.com/gh_…...

掌握AI教材编写技巧,低查重AI工具助你轻松完成教材写作!

教材编写困境与AI工具的出现 教材初稿完成后,接下来的修改过程真的是一场“煎熬”!通读全文,寻找逻辑上的漏洞和知识点的错误,真的是需要花费大量的时间。每当调整一个章节的结构,就会牵动后面多个部分的内容&#xf…...