OpenCV颜色空间转换(1)颜色空间转换函数cvtColor()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

将图像从一个颜色空间转换到另一个颜色空间。

此函数将输入图像从一个颜色空间转换到另一个颜色空间。在进行 RGB 颜色空间之间的转换时,应显式指定通道的顺序(RGB 或 BGR)。请注意,在 OpenCV 中,默认的颜色格式通常称为 RGB,但实际上它是 BGR(字节顺序相反)。因此,在标准(24 位)彩色图像中,第一个字节将是 8 位的蓝色组件,第二个字节将是绿色,第三个字节将是红色。第四、第五和第六个字节将是第二个像素(首先是蓝色,然后是绿色,最后是红色),依此类推。

R、G 和 B 通道值的传统范围是:

  • 0 到 255 对于 CV_8U 图像
  • 0 到 65535 对于 CV_16U 图像
  • 0 到 1 对于 CV_32F 图像

在线性变换的情况下,范围无关紧要。但在非线性变换的情况下,输入的 RGB 图像应被归一化到适当的值范围以获得正确的结果,例如,在进行 RGB → Luv* 转换时。例如,如果您有一个直接从 8 位图像转换而来的 32 位浮点图像,并且没有任何缩放,则其值范围将是 0…255 而不是函数假定的 0…1。因此,在调用 cvtColor 之前,您需要先将图像缩小:

img *= 1./255;
cvtColor(img, img, COLOR_BGR2Luv);

如果您使用 cvtColor 函数处理 8 位图像,转换过程中会损失一些信息。对于许多应用而言,这种损失可能不会被注意到,但在需要全色彩范围的应用中或在执行某个操作前后需要转换图像的应用中,建议使用 32 位图像。

如果转换增加了 alpha 通道,其值将被设置为对应通道范围的最大值:对于 CV_8U 为 255,对于 CV_16U 为 65535,对于 CV_32F 为 1。

函数原型


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

参数

  • 参数src i输入图像:8 位无符号、16 位无符号(CV_16UC…)或单精度浮点。
  • 参数dst 输出图像,大小和深度与 src 相同。
  • 参数code 颜色空间转换代码(参见 ColorConversionCodes)。
  • 参数dstCn 目标图像中的通道数。如果该参数为 0,则通道数会根据 src 和 code 自动推断。

代码示例

#include <opencv2/opencv.hpp>
#include <iostream>int main(int argc, char** argv)
{// 加载一个图像文件,如果未提供,则使用默认的图像cv::Mat image = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/qiu.jpg");if (image.empty()){std::cerr << "Error: Image cannot be loaded!" << std::endl;return -1;}// 创建一个窗口来显示原始图像cv::namedWindow("Original Image", cv::WINDOW_AUTOSIZE);cv::imshow("Original Image", image);// 将图像从 BGR 转换为灰度cv::Mat grayImage;cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY);// 创建一个窗口来显示灰度图像cv::namedWindow("Grayscale Image", cv::WINDOW_AUTOSIZE);cv::imshow("Grayscale Image", grayImage);// 等待用户按键后退出cv::waitKey(0);return 0;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/415344.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv车道偏离系统-代码+原理-人工智能-自动驾驶

车道偏离预警系统&#xff08;Lane Departure Warning System, LDWS&#xff09;是一种主动安全技术&#xff0c;旨在帮助驾驶员避免因无意中偏离车道而引发的事故。从原理到实战应用&#xff0c;其工作流程大致如下&#xff1a; 传感器采集 &#xff1a;系统通常配备有一个或…

蜂信物联 FastBee 开源物联网平台 download 任意文件读取漏洞复现

0x01 产品简介 蜂信物联(FastBee)开源物联网平台是一个专为物联网应用设计的综合性平台,它集成了硬件接入、数据管理、应用开发等一系列功能,为用户提供了一个完整、便捷的物联网解决方案。平台以其简单易用、功能强大、高度可扩展和安全性高的特点,为物联网应用的发展提…

四层神经网络,反向传播计算过程;四层神经网络中:y的函数公式是什么

目录 四层神经网络,反向传播计算过程 网络结构 前向传播 损失函数 反向传播 1. 计算输出层到隐藏层 2 的梯度 2. 计算隐藏层 2 到隐藏层 1 的梯度 3. 计算输入层到隐藏层 1 的梯度 梯度下降更新 四层神经网络,反向传播计算过程 在四层神经网络中,使用均方差损失函数…

赞奇科技与华为云共襄828 B2B企业节,激活数字内容“云”创作

8月28日&#xff0c;在2024中国国际大数据产业博览会上&#xff0c;第三届828 B2B企业节正式开幕&#xff0c;旨在融通数智供需&#xff0c;加速企业智改数转&#xff0c;助推中国数智产业实力再升级。 828 B2B企业节是全国首个基于数字化赋能的企业节&#xff0c;由华为联合上…

关于前端布局的基础知识

float 横向布局 float 实现横向布局&#xff0c;需要向横着布局的元素添加float 其值left right 存在问题 如果使用float 所在父级五高度&#xff0c;会导致下方的元素上移 top的高度被吞了 解决方法&#xff1a; 给父级元素设置高度&#xff1a;不推荐&#xff0c;需要给父级…

2024最新最全:信息安全风险评估服务,零基础入门到精通,收藏这一篇就够了

基本概念 根据有关信息安全技术与管理标准&#xff0c;对信息系统及其处理、传输和存储的信息的机密性、完整性和可用性等安全属性进行评价&#xff0c;同时评估资产面临的威胁以及威胁利用脆弱性导致安全事件的可能性&#xff0c;并结合安全事件所涉及的资产价值来判断安全事件…

苹果微信卸载了怎么恢复聊天记录?学会这4招,惊艳所有人!

如果我们不小心卸载了微信应用&#xff0c;那手机里的聊天记录怎么恢复呢&#xff1f;通常情况下&#xff0c;微信卸载了再重新安装&#xff0c;之前的聊天记录一般都不会保存在聊天框中。那么&#xff0c;苹果手机用户面对微信卸载了怎么恢复聊天记录的情况时&#xff0c;该怎…

机械学习—零基础学习日志(概率论总笔记2)

正态分布 高斯分布也叫做正态分布。假定事件A经过n次试验后发生了k次&#xff0c;把k的概率分布图画一下&#xff0c;就得到了一个中间鼓起&#xff0c;像倒扣的钟一样的对称图形。 18世纪&#xff0c;数学家棣莫弗和拉普拉斯把这种中间大&#xff0c;两头小的分布称为正态分布…

ArcGIS Pro 发布松散型切片

使用ArcGIS Pro发布松散型切片问题&#xff0c;有时候会出现切片方案写了松散型&#xff0c;但是自动切片完成后依然是紧凑型的问题&#xff0c;这时候可以采用手动修改然后再切片的方式。 1. 发布切片服务 选择手动切片方式 2. 手动修改服务的切片方案文件 修改cache服务…

使用Aqua进行WebUI测试(Pytest)——介绍篇(附汉化教程)

一、在创建时选择Selenium with Pytest 如果选择的是Selenium&#xff0c;则只能选择Java类语言 选择selenium with Pytest&#xff0c;则可以选择Python类语言 Environment 其中的【Environment】可选New 和 Existing New &#xff1a;选择这个选项意味着你希望工具为你创…

大模型隐私泄露攻击技巧分析与复现

前言 大型语言模型&#xff0c;尤其是像ChatGPT这样的模型&#xff0c;尽管在自然语言处理领域展现了强大的能力&#xff0c;但也伴随着隐私泄露的潜在风险。在模型的训练过程中&#xff0c;可能会接触到大量的用户数据&#xff0c;其中包括敏感的个人信息&#xff0c;进而带来…

500元内蓝牙耳机推荐哪款好?四大百元终极蓝牙耳机推荐

在如今日益繁荣的蓝牙耳机市场中&#xff0c;消费者面对众多品牌和型号时常常感到迷茫。特别是预算限定在500元以内时&#xff0c;选择一款性价比高、音质出色且功能全面的蓝牙耳机显得尤为重要&#xff0c;那么500元内蓝牙耳机推荐哪款好&#xff1f;下面我就为大家带来了四大…

从模型到实践:新时代【数学建模竞赛论文】的结构、规范与创新解析

目录 1. 数学建模竞赛论文的重要作用 1.1 论文是竞赛成果的书面形式 1.2 论文是评判参赛成绩的唯一依据 1.3 论文写作是科技论文写作的基本训练 1.4 数学建模竞赛论文的综合性 1.5 数学建模竞赛论文与学术研究的联系 1.6 数学建模竞赛论文的重要性在评委眼中 1.7 数学建…

UE5蓝图 抽卡出货概率

SSR概率0.1 SR概率0.2 R概率0.7 ps&#xff1a;数组内相加为1。且从小到大排序。

Language Models are Few-Shot Learners

Abstract 最近的研究表明&#xff0c;通过在大量文本语料上进行预训练&#xff0c;然后在特定任务上进行微调&#xff0c;可以在许多自然语言处理任务和基准测试中取得显著进展。尽管这种方法在架构上通常是任务无关的&#xff0c;但它仍然需要特定任务的微调数据集&#xff0…

内存溢出排查java.lang.OutOfMemoryError: Java heap space

内存溢出样例 public class App {public static void main(String[] args) {new Thread() {public void run() {while(true) {Thread threadBigObject new Thread(new Runnable() {public void run() { // while (true) {BigObject bigObject ne…

DevOps学习笔记

记录以下DevOps学习笔记&#xff0c;这里是笔记的入口汇总&#xff0c;可以直观的看到所有的笔记&#xff0c;还没有入口的部分&#xff0c;在下正在努力编写中。 gitlab jenkins docker docker安装 artifactory 1.artifactory安装 2.artifactory使用 计算机网络 1.dn…

快速构建一个ui界面程序--pyqt入门

快速构建一个ui界面程序--pyqt入门 0 背景1 环境准备1.1 安装python1.2 安装pyqt 2 UI设计2.1 启动UI设计可视化工具2.2 生成*.ui文件2.3 编译ui生成对应的py 3 使用UI 0 背景 本文档用于记录开发者如何快速构建一个简单UI程序。开发者使用文档中提及的工具并用于商业活动时&a…

深度学习(三)-反向传播

反向传播算法 深度学习三巨头发表反向传播论文 https://www.cs.toronto.edu/~hinton/absps/naturebp.pdf 正向传播网络 前一层的输出作为后一层的输入的逻辑结构&#xff0c;每一层神经元仅与下一层的神经元全连接&#xff0c;通过增加神经网络的层数虽然可为其提供更大的灵…

​如何通过Kimi强化论文写作中的数据分析?

在学术研究领域&#xff0c;数据分析是验证假设、发现新知识和撰写高质量论文的关键环节。Kimi&#xff0c;作为一款先进的人工智能助手&#xff0c;能够在整个论文写作过程中提供支持&#xff0c;从文献综述到数据分析&#xff0c;再到最终的论文修订。本文将详细介绍如何将Ki…