ffmpeg到opencv的格式转换

       首先通过ffmpeg的sws_scale函数可以将原视频格式转换为YUV格式,保存在AVPicture结构体里,而AVPicture结构体里的data成员即储存着视频数据,下面通过一段代码就可以将YUV格式的视频转换成opencv的Mat 格式:

            Mat mYUV(c->height + c->height/2, c->width, CV_8UC1, * pict.data);//<span style="font-family: Arial, Helvetica, sans-serif;"> pict.data即为视频的数据</span>
            Mat mRGB(c->height, c->width, CV_8UC3);
            cv::cvtColor(mYUV,mRGB,CV_YUV2BGR_YV12);

      这一工作花费了我大半天的时间,以为这种格式转换很复杂,其实很简单:只要得到原视频的数据data,就可以用此data初始化任何库的图像容器,因为即便是各个库的图片容器不一样,但是视频的数据格式确实一样的,YUV的就是YUV的,RGB的就是RGB的,只要我能得到这个“数据”,就能用此数据初始化任何图片容器,这个过程也就是拿这些数据去填充容器,容器虽然不一样,但是数据一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值