环境:

vs2015;Qt5.8;opencv3.4;

从文件读取一帧的数据后从yuv转到rgb,用rgb构造一个IplImage,再把IplImage 转成QImage,显示。

yuv420转rgb:

void YUV420_2_RGB(unsigned char* pYUV, unsigned char* pRGB, int width, int height)
{//找到Y、U、V在内存中的首地址  unsigned char* pY = pYUV;unsigned char* pU = pYUV + height*width;unsigned char* pV = pU + (height*width / 4);unsigned char* pBGR = NULL;unsigned char R = 0;unsigned char G = 0;unsigned char B = 0;unsigned char Y = 0;unsigned char U = 0;unsigned char V = 0;double temp = 0;for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){//找到相应的RGB首地址  pBGR = pRGB + i*width * 3 + j * 3;//取Y、U、V的数据值  Y = *(pY + i*width + j);U = *pU;V = *pV;//yuv转rgb公式  //yuv转rgb公式  temp = Y + ((1.773) * (U - 128));B = temp<0 ? 0 : (temp>255 ? 255 : (unsigned char)temp);temp = (Y - (0.344) * (U - 128) - (0.714) * (V - 128));G = temp<0 ? 0 : (temp>255 ? 255 : (unsigned char)temp);temp = (Y + (1.403)*(V - 128));R = temp<0 ? 0 : (temp>255 ? 255 : (unsigned char)temp);//将转化后的rgb保存在rgb内存中,注意放入的顺序b是最低位  *pBGR = B;*(pBGR + 1) = G;*(pBGR + 2) = R;if (j % 2 != 0){*pU++;*pV++;}}if (i % 2 == 0){pU = pU - width / 2;pV = pV - width / 2;}}
}

IplImage 转成QImage:


QImage *IplImageToQImage(const IplImage *img)
{  QImage *image;  cvCvtColor(img,img,CV_BGR2RGB);  uchar *imgData=(uchar *)img->imageData;  image=new QImage(imgData,img->width,img->height,QImage::Format_RGB888);  return image;
}  

参考:

IplImage转QImage: https://blog.csdn.net/gfocean/article/details/6440844

yuv420转RGB:https://blog.csdn.net/rookie_wei/article/details/32909871

项目流程参考:https://blog.csdn.net/leixiaohua1020/article/details/50466201

项目下载:

https://download.csdn.net/download/st_spring/10350563

Qt 播放Yuv420p视频相关推荐

  1. QT播放本地视频和网络视频

    首先,需要使用到模块有multimedia 和multimediawidgets, 在QT中.pro文件添加 QT += multimedia multimediawidgets 1.本地视频播放 _ ...

  2. Qt源码解析-源码解析-QVideoWidget播放手机视频旋转问题

    Qt源码解析 索引 Qt源码解析-源码解析-QVideoWidget播放手机视频旋转问题 问题描述与复现 使用手机拍摄的视频是竖屏的,上传后,使用QVideoWidget播放,变成横屏. 总结,可以让 ...

  3. 【Qt 开源音视频框架模块QtAV】03:QTAV主要接口展示以及播放器源码分享

    介绍 QtAV 是一个基于 Qt 和 FFmpeg 的跨平台.高性能多媒体播放框架,能够帮助你轻而易举地编写出一个播放器. [Qt 开源音视频框架模块QtAV]01:介绍.编译以及简单使用 因为网上使 ...

  4. QT实现播放wmv视频文件QMediaPlayer_QVideoWidget

    QT实现播放wmv视频文件QMediaPlayer_QVideoWidget QT实现播放wmv视频文件QMediaPlayer_QVideoWidget.rar-QT文档类资源-CSDN下载QT实现 ...

  5. 【Qt+FFmpeg】鼠标滚轮放大、缩小、移动——解码播放本地视频(三)

    上一期我们实现了播放.暂停.重播.倍速功能,这期来谈谈如何实现鼠标滚轮放大缩小和移动:如果还没看过上期,请移步 [Qt+FFmpeg]解码播放本地视频(一)_logani的博客-CSDN博客[Qt+F ...

  6. QT播放视频QMediaPlayer

    pro文件添加QT +=multimedia multimediawidgets: UI界面拖拽一个QWidget,右键提升为QVideoWidget: 定义QMediaPlayer对象 QMedia ...

  7. 【Qt 开源音视频框架模块QtAV】02:QTAV多功能播放器

    前言 在[Qt 开源音视频框架模块QtAV]01:介绍.编译以及简单使用中我们已经完成了QTAV的项目部署和简单案例的测试,下面我再分享下QTAV提供的播放器例程. 程序功能效果展示 演示的项目在QT ...

  8. 解决Qt播放视频无法播放的问题

    qt在播放视频时出错: DirectShowPlayerService::doRender: Unresolved error code 80040266 解决:下载解码器 我之前在win7用的解码器 ...

  9. Qt中嵌入视频并循环播放方法

    Qt中插入视频的方法很多,有QVideoPlayer方法,也有用Phonon的,本篇博客就是描述如何在一个QMainwindow界面中,划出一个区域,播放视频,并可以控制视频的切换.停止.暂停.循环, ...

最新文章

  1. windows server2008R2故障转移群集
  2. postgresql数据库用户名密码验证失败
  3. Java并发——线程中断学习
  4. myeclipse jsp头
  5. 毕设日志——Fast RCNN
  6. 分享一些android的资料 很实用
  7. 华三交换机配置access命令_华3交换机配置命令大全
  8. 【CocosCreator】单机游戏存档的常用加密解密方法
  9. python泰坦尼克号数据预测_泰坦尼克号幸存者预测 python 详解
  10. python版本切换 for Windows(Anaconda) Linux(pyenv)
  11. Adobe_Acrobat_Pro_DC_2022.003.20314 下载安装
  12. 视频 | 苏炳添的“冠军卧室”曝光,来看看百米飞人的另一面
  13. 计算机桌面曝光,win7电脑桌面壁纸曝光过高影响图标怎么办?亲测实用解决方法...
  14. python在windows command下打印中文出错 IOError [Errno 22] Invalid argument
  15. EXCEL描述统计输出详解:标准误、置信度、偏度、峰度和JB检验
  16. C++读取bmp格式图片
  17. ZIP炸弹怎样反击扫描器?
  18. Python 绘制e^x,e^-x,e^x/x,e^-x/x,e-2x/x,e^-3x/x,ln(x)图像
  19. 拍脑壳所想之 ——戏言面向对象
  20. 超详细的八大排序算法的各项比较以及各自的特点

热门文章

  1. pbootcms火车头免登录发布模块pbootcms入库插件
  2. 解析XML数据,必看
  3. linux无线网卡连接不稳定怎么办,无线网络信号不稳定的四种原因及解决方法
  4. 华为手机开启查找手机显示无法连接服务器,开启查找手机云服务器
  5. 进入Ubuntu系统Grub修改unix密码并加密
  6. weixin sdk java 开源_weixin4j(微信公众开发平台SDK)
  7. BlackBerry中文网站-解决方案,开发等
  8. bezier曲线LoadingDemo
  9. CSS:谷歌浏览器logo网页设计
  10. opencv 保存读取16位深度的图像