我有以下代码:
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));
}
我打印出来的错误是错误:没有错误。
我不明白为什么它会抛出错误消息而没有错误。任何帮助将不胜感激。我也通过网上看到的示例在没有创建的情况下尝试了该方法,但是那也不起作用。
答案 0 :(得分:0)
您要转换什么?如果从jpeg或h.264使用CUDA获得帧,则它没有3平面格式(例如YUV420),则是2平面格式NV12。是你的情况吗?然后使用cuda sdk中的nppiNV12ToBGR_709HDTV_8u_P2C3R函数。
OpenCV无法很好地表示多平面格式。用于色彩转换的cuda模块无法理解您的格式:here。