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 int4 目标通道顺序数组,指定每个输出通道来自输入的哪个索引(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;
}

运行结果

相关推荐
意图共鸣2 分钟前
意图共鸣科技8月10日正式发布《AI协作记忆系统 · 认知架构白皮书》
人工智能·科技·microsoft
牧羊人.3334 分钟前
计算机视觉基础|第2章 OpenCV图像基础操作(读写、窗口、像素操作)
人工智能·opencv·计算机视觉
avi911115 分钟前
[AI教做人]AI平台做2项目;一个3D模型展示,另一个框架多人
javascript·人工智能·ai·3d模型·3d引擎·顶点和法线
焱童鞋33 分钟前
基于DJL的LSTM水文预报模型训练完整指南
人工智能·rnn·lstm
猎嘤一号35 分钟前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
V哥AI增长44 分钟前
Schema.org 结构化数据与GEO技术落地:AI引擎引用机制与JSON-LD部署实证研究
大数据·运维·人工智能
马拉AI1 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
IT_陈寒1 小时前
JavaScript类型转换把我坑惨了,这破玩意真该早点搞明白
前端·人工智能·后端
用户938515635071 小时前
手写一个 LLM Harness 框架:用工程化手段把大模型幻觉踩在脚下
javascript·人工智能·后端
前端开发江鸟1 小时前
我能解释 RAG、MCP 和 Eval,却画不出一条完整的 Agent 链路
人工智能