OpenCV 图形API(48)颜色空间转换-----将 LUV 颜色空间的图像数据转换为 BGR 颜色空间函数LUV2BGR()

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

算法描述

将图像从LUV颜色空间转换为BGR颜色空间。
该函数将输入图像从LUV颜色空间转换为BGR。B、G和R通道值的常规范围是0到255。

输出图像必须是8位无符号3通道图像(CV_8UC3)。

cv::gapi::I4202RGB 是 OpenCV G-API 模块中用于将 I420(YUV 4:2:0) 格式的图像数据转换为 RGB 格式的一个函数。G-API(Graph API)是OpenCV中的一个模块,旨在通过定义图像处理操作的高效图形来加速计算机视觉任务,并且可以在不同的后端上运行,如CPU、GPU等。

注意
函数的文本ID是"org.opencv.imgproc.colorconvert.luv2bgr"

函数原型

GMat cv::gapi::LUV2BGR 	
(const GMat &  	src
) 	

参数

  • 参数src - 输入图像:8位无符号3通道图像(CV_8UC3)。

返回值

返回一个新的 GMat 对象,表示从输入的 I420 图像数据转换得到的 RGB 格式的图像数据。

使用场景

当你需要在视频帧处理或图像分析任务中使用基于RGB的颜色空间,但你的输入源提供的是I420格式的数据时,这个函数特别有用。例如,在处理来自摄像头或其他影像设备的数据时,这些设备可能会输出YUV格式的数据,特别是I420格式,因为这种格式有利于压缩和传输。为了进行后续的色彩处理或者显示,你可能需要将其转换为RGB格式。

代码示例

#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <opencv2/opencv.hpp>int main()
{// 假设我们有一个LUV格式的图像cv::Mat luvGBR = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_COLOR );cv::Mat luvImg;cv::cvtColor( luvGBR, luvImg, cv::COLOR_BGR2Luv );if ( luvImg.empty() ){std::cerr << "Error: Image not found or unable to load." << std::endl;return -1;}// 如果你的输入图像是其他格式(如BGR),你可以先将其转换为LUVcv::Mat luvMat;cv::cvtColor( luvImg, luvMat, cv::COLOR_BGR2Luv );// 定义G-API图cv::GMat in;auto out = cv::gapi::LUV2BGR( in );cv::GComputation comp( cv::GIn( in ), cv::GOut( out ) );cv::Mat bgrImg;try{// 应用到输入图像并获取输出图像comp.apply( luvMat, bgrImg, cv::compile_args( cv::gapi::kernels() ) );// 显示结果cv::imshow( "LUV image", luvImg );cv::imshow( "BGR image", bgrImg );cv::waitKey();}catch ( const cv::Exception& e ){std::cerr << "OpenCV exception: " << e.what() << std::endl;}catch ( const std::exception& e ){std::cerr << "Error: " << e.what() << std::endl;}return 0;
}

运行结果

在这里插入图片描述

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

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

相关文章

HOW MUCH POSITION INFORMATION DO CONVOLUTIONAL NEURAL NETWORKS ENCODE?

1. 动机: 卷积神经网络中的卷积操作实际上是一个局部的操作,这样的话就会使得它虽然知道自己看的是什么,但是却不清楚他在图像中的位置信息,但是位置信息实际上是很有用的,因此CNN可能潜在的学习到了如何去编码这种位置信息。所以这篇论文就是为了研究这种位置信息是如何在…

56、如何快速让⼀个盒⼦⽔平垂直居中

在网页开发中&#xff0c;有多种方式能让一个盒子实现水平垂直居中。下面为你介绍几种常见且快速的方法。 1. 使用 Flexbox 布局 Flexbox 是一种非常便捷的布局模型&#xff0c;能够轻松实现元素的水平和垂直居中。 html <!DOCTYPE html> <html lang"en"&…

RAG应用过程监控系统选型:LangFuse

Langfuse 是一个开源的大语言模型&#xff08;LLM&#xff09;工程平台&#xff0c;旨在协助团队构建、调试和改进由人工智能驱动的应用程序。凭借其全面的工具套件&#xff0c;Langfuse 使开发者能够深入洞察其 LLM 应用程序&#xff0c;并优化性能。 Stars 数10,522Forks 数9…

Java+nanomsg快速实现去broker的数据通信

先说一下nanomsgJava需要做什么&#xff1a; 1、nanomsg的so文件的制作与放置路径 2、Java代码引入nanomsg的依赖 3、支持Socket参数的调节&#xff08;包括ipv4/ipv6的网络支持&#xff09; 在我目前的认知范围内要与一个通讯目标实现数据交互通常有这些方式 1、broker中间人…

lightgbm原理、特殊点、参数分析

lightgbm&#xff1a; 一、位置&#xff1a; 相比XGB&#xff0c;LGBM有更高效的计算效率和更低的内存占用&#xff0c;并且面对高维数据&#xff0c;LGBM算法拥有更好的过拟合特性&#xff0c;这使得在建模数据量日趋增加的今天&#xff0c;LGBM会更适合作为前期探索性建模的模…

车载软件架构 --- 二级boot设计说明需求规范

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…

Cpp实现window上cmd执行效果

Cpp实现window上cmd执行效果 文章目录 Cpp实现window上cmd执行效果1.头文件包含部分2.main 函数部分3. 获取当前工作目录部分4.主循环部分5.退出条件部分6.处理 cd 命令部分7.执行其他命令部分8.读取命令输出部分9.关闭管道并处理返回码部分10.源码 1.头文件包含部分 #include…

STM32 HAL库FreeRTOS 中断管理

一、引言 在嵌入式系统开发中&#xff0c;STM32 微控制器凭借其高性能、低功耗和丰富的外设资源&#xff0c;被广泛应用于各种领域。FreeRTOS 作为一款轻量级、开源且功能强大的实时操作系统&#xff0c;为多任务处理提供了良好的支持。中断是嵌入式系统中实现实时响应外部事件…

在 UE5 编辑器中,由于游戏设置 -> EV100 设置,点击播放前后的光照不同。如何保持点击播放前后的光照一致?

​In Unreal Engine 5 (UE5), discrepancies in lighting between the editor and play modes are often due to auto exposure settings, particularly when using the EV100 system. To maintain consistent lighting across both modes, follow these steps:​YouTube1Epic …

[python] set

1.添加元素 在 Python 中&#xff0c;向 set 添加一个元素可以使用 add() 方法。如果添加的元素已经存在于 set 中&#xff0c;add() 不会重复添加&#xff08;因为 set 具有自动去重的特性&#xff09;。 方法 1&#xff1a;add(element)&#xff08;添加单个元素&#xff0…

第一期第18讲26:23

shell脚本以 .sh为后缀&#xff0c;里面存放着一行行要运行的linux指令。 shell脚本第一行一定为 #!/bin/bash&#xff0c;表示使用bash。 shell文件举例如下&#xff1a; #!/bin/bash echo "hello shell!" shell文件默认没有可执行权限&#xff0c;因此 chmod 777 m…

解决 Ubuntu 下 VTune 无法收集 CPU 硬件时间计数数据的问题

解决 Ubuntu 下 VTune 无法收集 CPU 硬件时间计数数据的问题 在 Ubuntu 上使用 Intel VTune Profiler 时遇到无法收集 CPU 硬件性能计数器数据的问题&#xff0c;通常是由于权限和系统配置问题导致的。以下是解决方案&#xff1a; 1. 检查并加载性能监控模块 首先确保 Linux…

健康元 以韧性换弹性

拼韧性的时候到了&#xff01; 一面是复杂的市场、政策环境与医药行业转型所叠加形成的向下压力&#xff1b;一面是AI技术深度赋能医药企业创新加速的向上机遇。 中国药企在经历了一轮群体性低潮期后&#xff0c;进入“结构性”分化的阶段。 在这一阶段上&#xff0c;一些财…

csv数据的读取

在地理信息系统&#xff08;GIS&#xff09;项目中&#xff0c;CSV&#xff08;Comma-Separated Values&#xff09;文件是一种常见的数据格式&#xff0c;用于存储表格数据。CSV 文件因其简单易用、可被多种软件读取而广泛应用于数据交换和存储。ArcPy 提供了强大的功能&#…

android Stagefright框架

作为Android音视频开发人员&#xff0c;学习Stagefright框架需要结合理论、源码分析和实践验证。以下是系统化的学习路径&#xff1a; 1. 基础准备 熟悉Android多媒体体系 掌握MediaPlayer、MediaCodec、MediaExtractor等核心API的用法。 理解Android的OpenMAX IL&#xff08…

【基于WSAAsyncSelec模型的通信程序设计】

文章目录 一、实验背景与目的二、实验设计与实现思路1. 设计思想2. 核心代码实现 总结 一、实验背景与目的 这次实验主要是为了让大家了解基于 WSAAsyncSelect 模型通信程序的编写、编译和执行过程。通过实践操作&#xff0c;深入掌握这种模型在实现计算机之间通信时的应用。 …

JAVA:利用 Apache Tika 提取文件内容的技术指南

1、简述 Apache Tika 是一个强大的工具,用于从各种文件中提取内容和元数据。📄Tika 支持解析文档、📸图像、🎵音频、🎥视频文件以及其他多种格式,非常适合构建🔍搜索引擎、📂内容管理系统和📊数据分析工具。 样例代码:https://gitee.com/lhdxhl/springboot-…

数码管静态显示一位字符(STC89C52单片机)

#include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; //用数组来存储数码管的真值表&#xff0c;数组将在下一章详细介绍 unsigned char code LedChar[] { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82…

计算机视觉与深度学习 | 工业视觉缺陷检测如何检小缺陷?背景概述,原理,检测难点,常用的检测算法,算法评估指标,新项目算法选择,算法部署

工业视觉小缺陷检测技术解析 背景概述 工业视觉缺陷检测是智能制造中质量控制的核心环节,而小缺陷检测(如微米级划痕、点状污渍、细微裂纹等)因其目标小、易受干扰等特点,成为技术难点。随着制造业对精度要求提升(如3C电子、半导体、精密零部件行业),传统人工目检和基…

OBS 日期时间.毫秒时间脚本 date-and-time.lua

文章目录 OBS 日期时间.毫秒时间脚本&#xff1a;效果 OBS 日期时间.毫秒时间脚本&#xff1a; obs obslua source_name ""last_text "" format_string "" activated false-- 此函数用于获取精确的毫秒级时间戳&#…