- 操作系統:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 編程語言:C++11
算法描述
該函數用于在 GPU 上交換圖像的通道順序(例如將 BGR 圖像轉為 RGB)。
它適用于多通道圖像(如 3 通道或 4 通道),可以自定義輸出通道的排列順序。
函數原型
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(),即同步執行。 |
代碼示例
#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 通道 BGRAcv::Mat h_rgba;cv::cvtColor( h_src, h_rgba, cv::COLOR_BGR2BGRA );// 上傳到 GPUcv::cuda::GpuMat d_src, d_dst;d_src.upload( h_rgba );// 設置目標通道順序:BGR -> RGBint 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;
}