Cuda OpenCV cvtColor调用不会将图像转换为其他格式

时间:2019-02-16 21:34:33

标签: c++ opencv

我有以下代码:

cv::Mat image = cv::Mat(1080, 1920, CV_8UC2, imagedata);
cv::cuda::GpuMat gpu_image;
gpu_image.upload(image);

cv::cuda::GpuMat bgr_image;
bgr_image.create(1080, 1980, CV_8UC3);

try
{
    cv::cuda::cvtColor(gpu_image, bgr_image, cv::COLOR_YUV2BGR_UYVY);
}
catch (...)
{
    cudaError_t error = cudaGetLastError();
    printf("ERROR: %s\n", cudaGetErrorString(error));
}

我打印出来的错误是错误:没有错误。

我不明白为什么它会抛出错误消息而没有错误。任何帮助将不胜感激。我也通过网上看到的示例在没有创建的情况下尝试了该方法,但是那也不起作用。

1 个答案:

答案 0 :(得分:0)

您要转换什么?如果从jpeg或h.264使用CUDA获得帧,则它没有3平面格式(例如YUV420),则是2平面格式NV12。是你的情况吗?然后使用cuda sdk中的nppiNV12ToBGR_709HDTV_8u_P2C3R函数。

OpenCV无法很好地表示多平面格式。用于色彩转换的cuda模块无法理解您的格式:here