Nvidia硬解码AppDecImageProvider.cpp例程输出bgra格式文件颜色不正确


例程AppDecImageProvider.cpp中输出格式为bgra(32位)

在这里插入图片描述
RGB32图像每个像素用32比特位表示,占4个字节,R,G,B分量分别用8个bit表示, 存储顺序为B,G,R ,最后8个字节保留。注意:在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA …。
在内存中的分量排列顺序如下:

在这里插入图片描述
B在高字节,A在低字节,在内存中存储时为大端法,即内存中的低地址存储高位,高地址存储低位。在读取指针写入文件时,自然写入文件的顺序为BGRA。

fpOut.write(reinterpret_cast<char*>(pImage.get()), nFrameSize);

输出文件如下,播放器为yuvplayer
在这里插入图片描述
颜色明显失真
进入函数Nv12ToBgra32
在这里插入图片描述
进入核函数YuvToRgbKernel
在这里插入图片描述
进入YuvToRgbForPixel
在这里插入图片描述
函数如下:
在这里插入图片描述
将rgb改为bgr:
在这里插入图片描述
更改后输出文件,使用yuvplayer播放如下:
在这里插入图片描述
颜色正常显示。

相关链接:
高地址与低地址的区别是什么?
图解RGB565、RGB555、RGB16、RGB24、RGB32、ARGB32等格式的区别

Nvidia Video Codec SDK——AppDecImageProvider动态模糊Cpp文件cu文件核函数focalLength——获得注视点对应深度核函数Bgra32ToSmooth Cpp文件 初始化变量: 平滑函数Bgra32ToSmooth,注意f和deep都转化为指针类型,因为数据在显存读取: Bgra32ToSmooth((uint8_t *)ppFrame_Deep[i... 文章目录2.5 使用不同的颜色格式2.5.1 RGB,BGR,RGBA和BGRA2.5.2 YUV和灰度图 2.5 使用不同的颜色格式 正如我们所见,OpenCV和iOS SDK中对于彩色和灰度图像是有不同的数据格式的,有时我们需要在这些格式之间进行转换。让我们从从代码中脱离出来,讨论一下这些格式之间的差异以及如果不执行正确的转换可能出现的问题。 2.5.1 RGB,BGR,RGBA和BGRA 在github发布了yolov8模型,可实现快速分类、目标检测与实分割,采用官方yolov8s-seg.pt效果如下图所示:​本文依旧对其中的实分割模型进行加速推理实战,开发c++版本的推理代码,没有过多的文件依赖,就3个cpp程序文件,不夹带私货,可以算是最简单的推理版本了,直接上链接:Yolov8-instance-seg-tensorrt,本人环境为:cuda10.2、cudnn8.2.4、Tensorrt8.0.1.6、Opencv4.5.4。 class Logger : public ILogger //1.创建logger void log(Severity severity, const char* msg) override if (severity != Severity::kINFO) std::cout << msg << std::endl; }} gLogge 今天主要学习的 Demo 是AppDecGL This sample application illustrates the decoding of media file and display of decoded framesin a window. This is done by CUDA interop with OpenGL. RGB16数据格式主要有二种:RGB565和RGB555 RGB565: 是16位的,2个字节,5+6+5,第一字节的前5位是R,后三位+第二字节前三位是G,第二字节后5位是B。 //获取高字节的5个bit R = color & 0xF800; //获取中间6个bit G = color & 0x07E0; //获取低字节5个bit B = color & 0x001F; GB555: 就是R-5bit,G-5bit,B-5bit;也是16位的,2个字节,RG. Nv12ToBgra32的长宽如果出现一个奇数,比如127,那么会导致cuda线程处理性能下降。 在实际使用中直接导致GPU使用率100%,并且导致了解码模块的异常,估计是内存直接异常了 之前发布了一份文档提供了怎么调整PG27UQ设置144Hz的方式步骤:华硕PG27UQ显示器怎么调整144Hz的刷新率按照这份步骤都是可以实现144Hz的。那若是自定义NVIDIA颜色设置之后,发现144Hz到不了,那是怎么回事呢???首先,我们看下NVIDIA颜色设置在哪里?打开NVIDIA控制面板,以任意一款NVIDIA的显示页面打开,可以看到放大图就是这样:什么是输出颜色格式?正如几何上...