OpenCV CUDA模块图像处理------颜色空间处理之GPU 上交换图像的通道顺序函数swapChannels()

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

算法描述

该函数用于在 GPU 上交换图像的通道顺序(例如将 BGR 图像转为 RGB)。

它适用于多通道图像(如 3 通道或 4 通道),可以自定义输出通道的排列顺序。

函数原型

cpp 复制代码
void cv::cuda::swapChannels 
(
 	InputOutputArray  	image,
	const int  	dstOrder[4],
	Stream &  	stream = Stream::Null() 
) 	

参数

参数 类型 描述
image InputOutputArray 输入/输出图像。必须是 3 或 4 通道的 8 位、16 位、32 位图像。
dstOrder const int[4] 目标通道顺序数组,指定每个输出通道来自输入的哪个索引(0-based)。
stream Stream& CUDA 流对象,用于异步执行。默认为 Stream::Null(),即同步执行。

代码示例

cpp 复制代码
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>

int main()
{
    // 加载图像(假设是 BGR 格式)
    cv::Mat h_src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );
    if ( h_src.empty() )
    {
        std::cerr << "无法加载图像!" << std::endl;
        return -1;
    }

    // 将 3 通道图像转换为 4 通道 BGRA
    cv::Mat h_rgba;
    cv::cvtColor( h_src, h_rgba, cv::COLOR_BGR2BGRA );

    // 上传到 GPU
    cv::cuda::GpuMat d_src, d_dst;
    d_src.upload( h_rgba );

    // 设置目标通道顺序:BGR -> RGB
    int dstOrder[ 4 ] = { 2, 1, 0 };

    // 执行通道交换
    cv::cuda::swapChannels( d_src, dstOrder );  // 输出结果写回 d_src 自身

    // 下载结果
    cv::Mat h_dst;
    d_src.download( h_dst );

    // 显示或保存
    cv::imshow( "Swapped Channels", h_dst );
    cv::imwrite( "output_rgb.jpg", h_dst );
    cv::waitKey( 0 );

    return 0;
}

运行结果

相关推荐
诸葛务农7 分钟前
光刻胶分类与特性——g/i线光刻胶及东京应化TP-3000系列胶典型配方(下)
人工智能·材料工程
Web3_Daisy25 分钟前
消除链上气泡图:为什么换仓正在成为新的链上生存策略?
大数据·人工智能·安全·web3·区块链
临风赏月36 分钟前
多模态数据湖对接 AI 训练的技术方案
大数据·人工智能
2401_841495641 小时前
【语音识别】混合高斯模型
人工智能·python·算法·机器学习·语音识别·gmm·混合高斯模型
乌恩大侠1 小时前
英伟达开源了其 Aerial 软件,以加速 AI 原生 6G 的发展。
人工智能·开源
杭州杭州杭州1 小时前
深度学习(1)---基础概念扫盲
人工智能·深度学习
金智维科技官方1 小时前
破解流程内耗,金智维流程自动化平台如何激活企业效率?
人工智能·ai·自动化·数字化
私域实战笔记2 小时前
SCRM平台对比推荐:以企业微信私域运营需求为核心的参考
大数据·人工智能·企业微信·scrm·企业微信scrm
格林威2 小时前
AOI在FPC制造领域的检测应用
人工智能·数码相机·计算机视觉·目标跟踪·视觉检测·制造
utmhikari2 小时前
【GitHub探索】代码开发AI辅助工具trae-agent
人工智能·ai·大模型·llm·github·agent·trae