原文:http://answers.opencv.org/question/36948/cvmat-to-avframe/

cv::Mat avframe_to_cvmat(AVFrame *frame)
{AVFrame dst;cv::Mat m;memset(&dst, 0, sizeof(dst));int w = frame->width, h = frame->height;m = cv::Mat(h, w, CV_8UC3);dst.data[0] = (uint8_t *)m.data;avpicture_fill( (AVPicture *)&dst, dst.data[0], PIX_FMT_BGR24, w, h);struct SwsContext *convert_ctx=NULL;enum PixelFormat src_pixfmt = (enum PixelFormat)frame->format;enum PixelFormat dst_pixfmt = PIX_FMT_BGR24;convert_ctx = sws_getContext(w, h, src_pixfmt, w, h, dst_pixfmt,SWS_FAST_BILINEAR, NULL, NULL, NULL);sws_scale(convert_ctx, frame->data, frame->linesize, 0, h,dst.data, dst.linesize);sws_freeContext(convert_ctx);return m;
}
AVFrame cvmat_to_avframe(cv::Mat* frame)
{AVFrame dst;cv::Size frameSize = frame->size();AVCodec *encoder = avcodec_find_encoder(AV_CODEC_ID_H264);AVFormatContext* outContainer = avformat_alloc_context();AVStream *outStream = avformat_new_stream(outContainer, encoder);avcodec_get_context_defaults3(outStream->codec, encoder);outStream->codec->pix_fmt = AV_PIX_FMT_YUV420P;outStream->codec->width = frame->cols;outStream->codec->height = frame->rows;avpicture_fill((AVPicture*)&dst, frame->data, PIX_FMT_BGR24, outStream->codec->width, outStream->codec->height);dst.width = frameSize.width;dst.height = frameSize.height;SaveFrame(&dst,dst.width,dst.height,0);return dst;
}

opencv mat与avframe互转相关推荐

  1. OpenCV实现Mat与vector,Mat与数组互转

    OpenCV实现Mat与vector互转 [尊重原创,转载请注明出处]https://blog.csdn.net/guyuealian/article/details/80253066 1.Mat与v ...

  2. Dlib学习笔记:dlib array2d与 OpenCV Mat互转

    Dlib学习笔记:dlib array2d与 OpenCV Mat互转 [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/7 ...

  3. 完美解决OpenCV Mat 与 FFmpeg AVFrame 的相互转换

    背景 最近做摄像头和麦克风实时采集推流的项目中,需要用OpenCV做实时美颜.需要将原始数据AVFame转换为Mat数据格式,进行美颜处理后再转成AVFrame进行编码,推流到流媒体服务器. 说明 其 ...

  4. 基于OpenCV的彩色空间互转

    Datawhale干货 作者:姚童,Datawhale优秀学习者 图像彩色空间互转在图像处理中应用非常广泛,而且很多算法只对灰度图有效:另外,相比RGB,其他颜色空间(比如HSV.HSI)更具可分离性 ...

  5. FFmpeg转OpenCV Mat显示

    FFmpeg一般采用SDL进行显示,如果不追求复杂的界面.交互和多线程功能,当然也可以使用OpenCV的imshow()方法进行显示了,而且实现起来比SDL更简单.方法也很简单,只需要把视频帧的BGR ...

  6. Dlib学习笔记:解决dlib array2d转 OpenCV Mat时颜色失真

    Dlib学习笔记:解决dlib array2d转 OpenCV Mat时颜色失真 [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/deta ...

  7. 【Halcon 字符串与HTuple互转,double与HTuple互转,Mat与HObject互转】

    文章目录 1 字符串与HTuple互转 2 double与HTuple互转 3 Mat 与 HObject互转 4 HObject 转 Mat Opencv和Halcon之间有很多数据要转换,特此记录 ...

  8. Halcon 字符串与HTuple互转,double与HTuple互转,Mat与HObject互转

    Opencv和Halcon之间有很多数据要转换,特此记录 1 字符串与HTuple互转 char *pImageName = "D:/data/temp.png"; HTuple ...

  9. pybind opencv mat

    如果c++中frame裁剪了,把裁剪的图传给python,图片会出现乱码,解决方法: crop后再进行 mat.clone(),返回pyhon就可以了. 这个也可以参考: https://blog.c ...

最新文章

  1. 【FFmpeg】解码时refcounted_frames标志的使用
  2. Microsoft.Bcl.Build 1.0.10 稳定版发布
  3. 注意!!Java-File类
  4. pythonpil模块安装_centos 安装python PIL模块
  5. 关于mysql内存表的一个帖子(转载)
  6. elementui中同时上传多个文件_element ui 上传文件,批量一次上传多个文件,为什么是发送了多次请求,我想一次请求,然后发送多个文件怎么实现呢?...
  7. java中常量定义在interface中好还是定义在class中
  8. HTML 5 中的新元素
  9. python游戏开发框架_2018年Python主流框架有哪些?最流行的Python框架
  10. [转载] Python之NumPy基础:数组与向量化计算
  11. 记一次Pr安装转场插件导致AE报错问题解决
  12. 阿里云服务器怎么购买才更划算(新手教程)
  13. Python股票数据爬虫解读
  14. java 庖丁解牛_“庖丁解牛” 分词器实现
  15. linux cp命令的-f 参数
  16. php标题行,php 显示标题
  17. \t\t编程的精义 - 愚公移山
  18. Oracle 12c新特性--LREG进程专门负责注册实例服务
  19. 分享Delphi处理EXCEL源码
  20. Navicat for mysql 运行.sql 文件时 出现的错误

热门文章

  1. js 正则表达式奇偶字符串替换_Python中的正则表达式及其常用匹配函数用法简介...
  2. oracle数据库查询表语句,oracle数据库重要的查询语句
  3. 简述安装linux至少需要哪两个分区?还有哪些常用分区?,Linux试题
  4. 关不关机 扫地机器人_BOBOT扫地机器人能扫还能拖,你的家庭好助理
  5. add函数 pytorch_pytorch常用函数
  6. 我的世界javaui材质包怎么下载_【我的世界指南】七、使用皮肤
  7. python合并多个excel为一个_Python合并多个Excel数据
  8. Spring Security 和 Shiro 该如何选择?
  9. 这款 网络排查 神器,运维用了都说好,赶紧收藏~
  10. 皮一皮:狭路相逢勇者胜...