yuv420转rgb24 不用ffmpeg libswscale解决方法

本文介绍了一种不使用libswscale库的手动将YUV420格式转换为RGB24格式的方法。通过具体的C语言代码示例详细展示了如何进行逐像素的颜色空间转换。

弄了好久都没解决,试了很多方法,终于在http://libav-users.943685.n4.nabble.com/yuv420-to-rgb24-NOT-using-libswscale-td1434694.html看到了解决方法,

void yuv2rgb(AVPicture *src, PixelFormat src_pix_fmt, AVPicture *dst, 
PixelFormat dst_pix_fmt, int width, int height) 

        unsigned char y, u,v; 
        char *rgb = dst->data[0]; 

        unsigned char  *yptr = src->data[0]; 
        unsigned char  *uptr = src->data[1]; 
        unsigned char  *vptr = src->data[2]; 

        int i =0; 

        for (int py=0; py < height; py++) 
        { 
                for (int px =0; px < width; px++, i+= 3) 
                { 
                        y = yptr[py*src->linesize[0]+px]; 
                        u = uptr[py/2*src->linesize[1]+px/2]; 
                        v = vptr[py/2*src->linesize[2]+px/2]; 
                        
                        rgb[ i ] = y + 1.402* (v-128); 
                        rgb[ i + 1 ] = y - 0.34414* (u-128) - 0.71414 *(v-128); 
                        rgb[ i + 2] = y + 1.772 *(u-128); 
                } 
        } 

如果相关问题的同仁可以联系我,共同研究!

 

转载于:https://www.cnblogs.com/artwebs/p/yuv420_to_gb24.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值