编码出来的图像色彩偏离

img


ffmpeg rtsp推流HDMI进来的视频,是opencv打开的设备文件,然后图像帧是BGR2转YUV_I420(YUV420P)后用mpp编码出来就是这样了

YUV没对齐,试一试将hor_stride和ver_strise与其分辨率相对应

答案参考ChatGPT Plus版,整理汇总。希望能帮助你解决问题
如果使用ffmpeg将HDMI输入的视频推流,并使用OpenCV打开设备文件进行处理,然后将图像帧从BGR2转换为YUV_I420(YUV420P),并使用MPP进行编码,但是最终的图像色彩偏离,可能有几个潜在的原因和解决方法。

  1. 颜色空间转换错误:确保在使用OpenCV进行颜色空间转换时,使用正确的转换标志。BGR到YUV_I420的正确转换标志应为cv2.COLOR_BGR2YUV_I420cv2.COLOR_BGR2YUV_I420_SP.

    例如:

    frame_yuv = cv2.cvtColor(frame_bgr, cv2.COLOR_BGR2YUV_I420)
    
  2. 编码器配置错误:检查使用MPP编码器时的配置参数是否正确。特别是,确保编码器期望的图像格式与输入图像格式匹配。

  3. 像素格式不匹配:确保在使用MPP编码器之前,图像的像素格式与编码器所期望的像素格式完全匹配。对于YUV_I420,确保图像数据的排列顺序正确,并且U和V平面的采样是正确的。

  4. 数据范围错误:对于YUV_I420,确保将像素值正确映射到正确的范围。Y分量的范围通常是0-255,而U和V分量的范围通常是在0-128之间。

如果您仍然遇到问题,可以提供更多的代码和详细信息,以便更准确地了解您的实现方式和问题所在。