- 操作系統:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 編程語言:C++11
算法描述
cv::cuda::transpose 是 OpenCV 的 CUDA 模塊中的一個函數,用于在 GPU 上對圖像或矩陣進行轉置操作(Transpose)。它是 cv::transpose 的 GPU 加速版本,適用于需要高性能處理的場景。
函數原型
void cv::cuda::transpose
(InputArray src1, // 輸入圖像/矩陣OutputArray dst, // 輸出圖像/矩陣Stream& stream = Stream::Null() // 可選:CUDA 流對象,用于異步執行
);
參數
參數名 | 類型 | 說明 |
---|---|---|
src1 | InputArray | 輸入的單通道或多通道 GpuMat 或 Mat。注意:輸入必須是二維矩陣。 |
dst | OutputArray | 輸出結果,尺寸為 src.cols x src.rows,即行列互換。類型與輸入相同。 |
stream | Stream& | 可選參數,指定當前操作使用的 CUDA 流。如果不傳,默認使用同步流 Stream::Null()。 |
使用示例代碼
以下是一個完整的示例,演示如何使用 cv::cuda::transpose 來對一張圖像進行 GPU 轉置:
#include <iostream>
#include <opencv2/cudaarithm.hpp>
#include <opencv2/cudaimgproc.hpp> // 包含 transpose 等 CUDA 圖像處理函數
#include <opencv2/opencv.hpp>int main()
{// 讀取圖像(灰度圖或彩色圖均可)cv::Mat src_host = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE ); // 替換為你自己的圖片路徑if ( src_host.empty() ){std::cerr << "無法讀取圖像" << std::endl;return -1;}// 將圖像上傳到 GPUcv::cuda::GpuMat src_gpu, dst_gpu;src_gpu.upload( src_host );// 使用 cuda::transpose 進行轉置cv::cuda::transpose( src_gpu, dst_gpu );// 下載回 CPU 并顯示cv::Mat dst_host;dst_gpu.download( dst_host );cv::imshow( "Original Image", src_host );cv::imshow( "Transposed Image", dst_host );cv::waitKey( 0 );return 0;
}