【音视频开发(三)】---YUV转RGB 图像颜色空间转换

该博客介绍了如何在Android中利用OpenCV库进行YUV到RGB的快速转换,通过OpenCV的内部并行计算优化,提高CPU转换效率。作者提供了一个名为Yuv2RgbCv的类,实现了数据输入、处理和输出的线程安全队列,以及核心的YUV转RGB的转换操作。这个类可以用于高效地处理解码后的原始视频帧数据。

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

Android的MediaCodec解码后,默认输出是原始视频图像格式,一般为YUV420,例如NV12, NV21。则我们需要进行YUV转RGB,以便后续输入至算法库。而如果使用循环单纯用CPU转换是比较慢的,这里使用Opencv来进行转换,Opencv虽然也是用了CPU,但是他内部做了并行计算的优化是比较快的,例如NEON/SSE等。

头文件:


#include "Flow.h"
#include <thread>
#include "DmSyncQueue.h"
#include "InputData.h"

#include <atomic>

using namespace  std;

class Yuv2RgbCv : public Flow {

public:
    Yuv2RgbCv();
    ~Yuv2RgbCv();
    void Init(int width, int height, int buffNumber=10);
    void PushData(const unsigned char *data, int size, int copy, int flag=0);
    void ReleaseOuputData(); //当外部使用完缓冲工区时释放
    void UnInit();
private:
    void Loop();

    int imageW;
    int imageH;

    int mMaxBufferNumber;
    int mBufferHead;
    int mBufferTail;
    atomic<int> mBufferSize;
    unsigned char **mOutputBuffer;
};

初始化:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值