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

运行结果

相关推荐
聚客AI2 分钟前
🌈提示工程已过时?上下文工程从理论到实践的完整路线图
人工智能·llm·agent
C嘎嘎嵌入式开发8 分钟前
(二) 机器学习之卷积神经网络
人工智能·机器学习·cnn
文心快码BaiduComate16 分钟前
开工不累,双强护航:文心快码接入 DeepSeek-V3.2-Exp和 GLM-4.6,助你节后高效Coding
前端·人工智能·后端
AI小云21 分钟前
【Python与AI基础】Python编程基础:函数与参数
人工智能·python
white-persist43 分钟前
MCP协议深度解析:AI时代的通用连接器
网络·人工智能·windows·爬虫·python·自动化
新智元44 分钟前
谷歌杀入诺奖神殿,两年三冠五得主!世界TOP3重现贝尔实验室神话
人工智能·openai
StarPrayers.1 小时前
卷积层(Convolutional Layer)学习笔记
人工智能·笔记·深度学习·学习·机器学习
skywalk81631 小时前
AutoCoder Nano 是一款轻量级的编码助手, 利用大型语言模型(LLMs)帮助开发者编写, 理解和修改代码。
人工智能
金井PRATHAMA1 小时前
描述逻辑对人工智能自然语言处理中深层语义分析的影响与启示
人工智能·自然语言处理·知识图谱