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

运行结果

相关推荐
学历真的很重要38 分钟前
LangChain V1.0 Context Engineering(上下文工程)详细指南
人工智能·后端·学习·语言模型·面试·职场和发展·langchain
IT=>小脑虎38 分钟前
Python零基础衔接进阶知识点【详解版】
开发语言·人工智能·python
黄焖鸡能干四碗1 小时前
智能制造工业大数据应用及探索方案(PPT文件)
大数据·运维·人工智能·制造·需求分析
世岩清上1 小时前
乡村振兴主题展厅本土化材料运用与地域文化施工表达
大数据·人工智能·乡村振兴·展厅
山海青风1 小时前
图像识别零基础实战入门 1 计算机如何“看”一张图片
图像处理·python
工藤学编程1 小时前
零基础学AI大模型之LangChain智能体执行引擎AgentExecutor
人工智能·langchain
图生生1 小时前
基于AI的商品场景图批量生成方案,助力电商大促效率翻倍
人工智能·ai
说私域2 小时前
短视频私域流量池的变现路径创新:基于AI智能名片链动2+1模式S2B2C商城小程序的实践研究
大数据·人工智能·小程序
yugi9878382 小时前
用于图像分类的EMAP:概念、实现与工具支持
人工智能·计算机视觉·分类
aigcapi2 小时前
AI搜索排名提升:GEO优化如何成为企业增长新引擎
人工智能