我是靠谱客的博主 温婉小甜瓜,这篇文章主要介绍ffmpeg到opencv的格式转换,现在分享给大家,希望可以做个参考。

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

复制代码
1
2
3
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的,只要我能得到这个“数据”,就能用此数据初始化任何图片容器,这个过程也就是拿这些数据去填充容器,容器虽然不一样,但是数据一样

最后

以上就是温婉小甜瓜最近收集整理的关于ffmpeg到opencv的格式转换的全部内容,更多相关ffmpeg到opencv内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部