前言

Opencv中通常是读取 avi 格式的视频文件,下面程序是直接读取 YUV格式的视频文件并显示出来。 这里需要将YUV读取出来,使用Mat格式保存再使用 cv::cvtColor() 将每帧的 yuv 数据转化为 RGB格式 ,然后显示或者在RGB空间进行算法处理,并且可以再利用cv::cvtColor()将RGB数据转换成yuv数据并写到文件中保存。

1、参考

2、OpenCV读取并显示YUV视频文件int main(int argc, char* argv[])

{

Mat yuvImage, rgbImage, yuvSave;

int filelength = 0;

int framenum = 0;

if(argc < 6)

{

printf("usage: demo.exe yuvname yuvSavename width height procnum \n");

return -1;

}

const char* yuvname = argv[1];

const char* yuvSavename = argv[2];

int width = atoi(argv[3]);

int height = atoi(argv[4]);

int procnum = atoi(argv[5]);

FILE* file_in = fopen(yuvname, "rb");

if(NULL == file_in)

{

printf("ERROR: open %s failed!!!\n", yuvname);

return -1;

}

FILE* file_out = fopen(yuvSavename, "rb");

if(NULL == file_out)

{

printf("ERROR: open %s failed!!!\n", yuvSavename);

return -1;

}

fseek(file_in, 0 ,SEEK_END);

filelength = ftell(file_in);

framenum = filelength/(width*height*3/2);

printf("total framenum: %d\n", framenum);

fseek(file_in, 0, SEEK_SET);

unsigned char *pYUVBuf = (unsigned char*)malloc(width*height*3/2*sizeof(unsigned char));

if(NULL == pYUVBuf)

{

printf("ERROR: malloc pYUVBuf failed,0x%x!!!\n", pYUVBuf);

return -1;

}

yuvImage.create(height*3/2, width, CV_8UC1);

yuvSave.create(height*3/2, width, CV_8UC1);

namedWindow("src Image", CV_WINDOW_NOARMAL);

namedWindow("dst Image", CV_WINDOW_NOARMAL);

for(int i=0;i

{

fread(pYUVBuf,1,width*height*3/2, file_in);

memcpy(yuvImage.data, pYUVBuf, width*height*3/2);

cvtColor(yuvImage, rgbImage, CV_YUV2BGR_I420);

imshow("src Image", rgbImage);

// 算法处理

Mat finalImage;

imshow("dst Image", finalImage);

cvtColor(finalImage, yuvSave, CV_BRG2YUV_I420);

fwrite(yuvSave.data, 1, width*height*3/2, file_out);

}

destroyWindow("src Image");

destroyWindow("dst Image");

fclose(file_in);

fclose(file_out);

}

THE END!

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2963033731@qq.com

opencv 解析yuv_通过OpenCV读取并显示YUV视频文件相关推荐

  1. matlab显示YCrCb的图像,【Matlab系列】读取并显示YUV视频文件

    Date: 2019-5-12 1.读取并显示YUV视频文件Matlab代码 %% 1.读取视频内容并显示 fid = fopen('akiyo_cif.yuv','r'); %读入YUV文件 row ...

  2. youcans 的 OpenCV 学习课—2.图像读取与显示

    youcans 的 OpenCV 学习课-2.图像读取与显示 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 本节介绍图像的读取.保存和显示.除基本方法和例程外,还给出了从 ...

  3. Android 基于ffmpeg开发简易播放器 - EGL和OpenGLESGLES显示YUV视频

    EGL和OpenGLESGLES显示YUV视频 1.EGL EGL是OpenGL ES与系统原始窗口的适配层: Display:用于与原生窗口建立连接. Surface:用于渲染的区域. Contex ...

  4. OpenCV 2.图像入门:读取、显示、保存

    OpenCV 中文官方文档:http://woshicver.com/ 图像入门:读取.显示.保存 cv.imread(),cv.imshow(),cv.imwrite() cv.imread()函数 ...

  5. 使用DirectDraw直接显示YUV视频数据

    最近在编写一个进行视频播放的ActiveX控件,工作已经接近尾声,现将其中显示YUV数据的使用DirectDraw的一些经验总结如下:(解码部分不是我编写的,我负责从网络接收数据,将数据传给解码器,并 ...

  6. opencv 学习第一课 图像读取、显示、写入 代码注释版 保证你每一行都能读懂

    import numpy as np import cv2 as cvimg = cv.imread('cat.jpg',0) #读入图片 cv.imshow('image1',img) #显示图片 ...

  7. video读取服务器本地的视频文件,javascript-video.js无法读取本地视频

    我有一个video.js播放器,并且刚接触网络. 我希望它阅读我的本地视频,但我收到一条消息: "很抱歉,此视频未找到兼容的源和播放技术." 但是:如果我使用video.js提供的 ...

  8. directdraw显示yuv视频,出现屏保时,yuv显示不出来,表面丢失

    原因是: DDrawSurface 丢失, DDraw表面在很多情况下都会丢失(如:启动其他全屏独占程序,屏保,或锁屏时), 表面丢失其实就是表面所使用的内存或显存被DirectDraw系统释放, 分 ...

  9. hutool 读取扩展名文件_Python OpenCV视觉智能感知第一讲——读取摄像头或视频文件并播放显示...

    Python OpenCV视觉智能感知 第一讲--读取摄像头或视频文件并播放显示 本部分内容将深入.全面.详细地介绍如何使用Anaconda Python和OpenCV读取摄像头或视频文件,并进行播放 ...

最新文章

  1. gradlew 的https代理设定
  2. echart 折线图设置y轴单位_如何让echarts中y轴的单位位于数值的右上角
  3. 汇编语言学习笔记-按指定的字体输出文本
  4. Luogu P2577 [ZJOI2005]午餐
  5. php system 执行失败,PHP 执行 system、exec 等函数发生错误
  6. Linux表空间扩容,linux下oracle表空间导致磁盘空间不足
  7. 清华大学python镜像_使用清华开源镜像安装tensorflow
  8. python 相关性检验怎么计算p值_不会Python进行时间序列预测?不要紧,大神来教你...
  9. Dlib 19.14发布——增加了一个训练RBF-SVM的auto-ML工具
  10. 关闭 IOS8 最近使用 最近联系人
  11. 【生信进阶练习1000days】day5-TxDb等注释包的使用
  12. Diamond programmer程序下载流程
  13. 汇川plc c语言,汇川小型PLC梯形图编程教程(十):输入输出继电器X和Y元件及常开常闭触点介绍...
  14. 从0搭建一个邮件服务器(用于邮件推送以及邮件群发业务)
  15. 自动控制原理7.1---离散系统的基本概念
  16. AVR单片机ATmega16之初识PWM模式
  17. 文件共享——HHFM
  18. 【精讲】vue数据绑定、数据内容的应用、数据结构、数据代理
  19. leetcode881.救生艇(中等)
  20. arnold 调用 mantra的光子 做GI全局光和caustic焦散

热门文章

  1. 可爱圣诞节手绘手帐素材,增添情趣
  2. 找不到图片素材,看这里
  3. 超经典实用APP UI产品界面设计模板
  4. 蒸汽朋克简单图形免扣PNG素材,让设计艺术变得简单
  5. win7变成xp风格了怎么改回_让电脑提速的几种方法(老电脑太卡怎么提速)
  6. python进程socket通信_python实现多进程通信实例分析
  7. 2021年四月中旬推荐文章
  8. Linux驱动:VFIO概述(vfio/iommu/device passthrough)
  9. Linux内核相关书籍
  10. Flink的累加器和广播变量、广播流、分布式缓存