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;
}

运行结果

相关推荐
沉默王二3 小时前
又一个顶级 AI 终端诞生了!Kaku 开源,实测安装配置+分屏对决
人工智能·openai·claude
xcLeigh3 小时前
Doubao-Seed-Evolving大模型接入教程|搭建全品类提示词+AI工具导航网页
前端·人工智能·python·ai·html·ai开发·豆包
不如语冰3 小时前
AI大模型入门-模块导入import
数据结构·人工智能·pytorch·python
海兰3 小时前
【高速缓存】RedisVL 指南:从向量搜索到 AI 应用落地
人工智能·redis
智恒百亿3 小时前
RTX 5090服务器全场景技术解析:极致算力的行业落地与价值赋能
大数据·人工智能·5090服务器
金伟API10243 小时前
常见的SQL面试题:经典50例
数据库·人工智能·笔记·sql·学习
硅徒3 小时前
金融系统渗透测试复盘:从授权边界到报告整改的全流程
人工智能
学术小白人3 小时前
【倒计时4个月】-AI赋能图像处理与计算机视觉技术国际学术研讨会
网络·人工智能·神经网络·数据分析·光学
俊哥V3 小时前
每日 AI 研究简报 · 2026-07-20
人工智能·ai
炘爚3 小时前
Inkling模型调研
人工智能