- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
该函数用于在 GPU 上进行颜色空间转换,支持多种常见的颜色空间转换操作。
函数原型
cpp
void cv::cuda::cvtColor
(
InputArray src,
OutputArray dst,
int code,
int dcn = 0,
Stream & stream = Stream::Null()
)
参数
参数
- src 源图像,支持以下属性:
- 深度(depth)为 CV_8U、CV_16U 或 CV_32F;
- 通道数为 1、3 或 4。
- dst 目标图像。
- code 颜色空间转换代码。详细信息请参见 cvtColor 函数。
- dcn 目标图像的通道数量。如果该参数为 0,则通道数会根据源图像和转换代码自动推断。
- stream 用于异步执行的 CUDA 流对象。
一些 3 通道的颜色空间(如 HSV、XYZ 等)可以存储在 4 通道图像中以获得更好的性能。
代码示例
cpp
#include <opencv2/cudaimgproc.hpp> // 必须包含此头文件
#include <opencv2/opencv.hpp>
int main()
{
// 从 CPU 加载图像
cv::Mat bgr_cpu = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );
if ( bgr_cpu.empty() )
{
std::cerr << "无法加载图像!" << std::endl;
return -1;
}
// 上传到 GPU
cv::cuda::GpuMat bgr_gpu, gray_gpu;
bgr_gpu.upload( bgr_cpu );
// 使用 GPU 进行颜色空间转换(BGR -> Gray)
cv::cuda::cvtColor( bgr_gpu, gray_gpu, cv::COLOR_BGR2GRAY );
// 下载结果回 CPU 并显示
cv::Mat gray_cpu;
gray_gpu.download( gray_cpu );
cv::imshow( "Gray Image", gray_cpu );
cv::waitKey( 0 );
return 0;
}
运行结果
