ffmpeg进行YUV420P和RGB24转换

本文深入探讨了图像处理中YUV420P到RGB24的转换方法,包括使用sws_scale函数实现转换过程,避免直接memcpy导致的图像倒置问题,并详细解释了RGB24与BGR24的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有两种方式可以进行图像像素之间的转换》

①   avpicture_fill(&pic, buffer, PIX_FMT_RGB24, width, height)

       sws_getcontext(width, height, PIX_FMT_YUV420P, width, height, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL)

      sws_scale(sCtx, pFrame->data,  pFrame->linesize,  

  0    /*数据开始地址*/   ,  height   /*数据行数*/  , pic.data ,    pic.linesize)

                                     实现将YUV420P 像素转换为 RGB24格式。


    转换结束后,数据同时写入 pic 和 buffer



②  将avpicture_alloc替换 avpicture_fill   方法

      avpicture_alloc(&pic, PIX_FMT_RGB24,  width,  height)     //申请AVPicture内存




③ 但是当将数据转换为RGB24时,如果直接调用memcpy拷贝数据,出来的图像会倒置,

         需要一行一行复制数据。


       ::调用下述代码可以实现YUV420P转换为RGB24格式




④:RGB24和BGR24的区别。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值