一、不带滚动条的视频读取播放。

1、原理介绍:视频的本质是一些静态的图像的集合,opencv可以不断读取视屏中的图片,显示,就可以实时的视频流进行处理了。

2、代码如下:

  1. /***********************************************************************************
  2. 开发环境:opencv3.0.0 + vs2012旗舰版;win7正式版32位
  3. 功能描述:播放AVI格式视频
  4. 作者信息:博乐Bar
  5. 开发时间:20150922
  6. ***********************************************************************************/
  7. #include <opencv2/opencv.hpp>
  8. using namespace cv;
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13. cvNamedWindow("AVI视频播放—博乐Bar");//创建一个窗口,固定大小不随图像改变
  14. /**********
  15. cvCreateFileCapture函数读取路径下的视频文件,把帧信息指针返回到CvCapture结构体指针中,
  16. 包含关于要读入的avi文件的状态信息此次调用返回avi视频文件的开头。
  17. **********/
  18. CvCapture * capture = cvCreateFileCapture("video.avi");
  19. IplImage * frame;
  20.  
  21. //需要不断循环读取下一帧,因此需要while循环,只有当用户按键或者视频读取完毕时才跳出循环
  22. while()
  23. {
  24. frame = cvQueryFrame(capture);//根据CvCapture指针提供的状态信息,抓取帧信息保存到IplImage指针里
  25. if(!frame)break;
  26. cvShowImage("AVI视频播放—博乐Bar",frame);
  27. char c = cvWaitKey();//①控制帧率,控制视频播放的快慢;②接受键盘输入,返回值为该键盘对应的asiccII码
  28. if(c==) break; //十进制数27是键盘退出键Esc对应的asiccII码
  29. }
  30. //释放CvCapture指针的内存空间,同时关闭命名窗口
  31. cvReleaseCapture(&capture);
  32. cvDestroyWindow("AVI视频播放—博乐Bar");
  33. return ;
  34. }

3、关于以上代码的几点说明:

①实现的功能:读取文件夹路径的视频,并且播放,播放速度粗略的控制用cvwaitkey函数;

②关于cvwaitkey函数:

函数原型:cvWaitKey(int delay)

cvWaitKey()函数的功能是是程序暂停,等待用户触发一个按键操作。但如果该函数参数设为一个正数,则程序将暂停一段时间,时间长为该整数值个毫秒单位,然后继续执行程序,即使用户没有按下任何键。

delay<=0时,函数cvWaitKey无限制的等待按键事件,所以显示图像时,需要在cvShowImage("**.bmp",image)后加上cvWaitKey(n)——n为小于等于0的数即可,程序停在显示函数处,不运行其他代码;否则,图像无法正常显示。

delay>0时,延迟"delay"ms,在显示视频时这个函数是有用的,用于设置在显示完一帧图像后程序等待"delay"ms再显示下一帧视频;如果使用cvWaitKey(0)则只会显示第一帧视频。

返回值:被按键的值,如果超过指定时间则返回-1。

如果程序想响应某个按键,可利用if(cvWaitKey(1)==Keyvalue);

二、带滚动条的AVI视频播放

1、代码如下:

  1. /***********************************************************************************
  2. 开发环境:opencv3.0.0 + vs2012旗舰版;win7正式版32位
  3. 功能描述:播放AVI格式视频
  4. 作者信息:博乐Bar
  5. 开发时间:20150922
  6. ***********************************************************************************/
  7. #include <opencv2/opencv.hpp>
  8.  
  9. int g_slider_position = ;
  10. CvCapture * g_capture =NULL;
  11.  
  12. void onTrackbarSlide(int pos){ //再拖动滚动条的时候,滚动条的位置会被作为int数字传入
  13. cvSetCaptureProperty(
  14. g_capture,
  15. CV_CAP_PROP_POS_FRAMES,
  16. pos
  17. );
  18. }
  19.  
  20. int main(){
  21. cvNamedWindow("AVI播放_博乐Bar",CV_WINDOW_AUTOSIZE);//申请可以自动调节大小的窗口Example1
  22. g_capture=cvCreateFileCapture("video.avi");//读取avi格式的影片
  23.  
  24. int frames = (int) cvGetCaptureProperty(
  25. g_capture,
  26. CV_CAP_PROP_FRAME_COUNT
  27. );
  28.  
  29. if(frames != ){
  30. cvCreateTrackbar( //进度条
  31. "Position",
  32. "AVI播放_博乐Bar",
  33. &g_slider_position,
  34. frames,
  35. onTrackbarSlide
  36. );
  37. }
  38.  
  39. IplImage * frame;
  40. while(){
  41. frame = cvQueryFrame(g_capture);//读取下一个影片帧率
  42. if(!frame)break;
  43. cvShowImage("AVI播放_博乐Bar",frame);
  44. char c=cvWaitKey(); //每读取一个视频片度就停止33毫秒,并且会收集键盘的输入
  45. if(c == )break;//27就是对应键盘上的ESC建,如果没有按键盘的话C为-1
  46. }
  47.  
  48. cvReleaseCapture(&g_capture);
  49. cvDestroyWindow("AVI播放_博乐Bar");
  50.  
  51. return ;
  52. }

opencv实例三:播放AVI格式视频的更多相关文章

  1. 调用opencv相关函数,从视频流中提取出图片序列&&&&jpg图片序列,转化成avi格式视频

    /************************ @HJ 2017/3/30 参考http://blog.sina.com.cn/s/blog_4b0020f301010qcz.html修改的代码 ...

  2. Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型

    转自原文 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 播放mp4格式的时候提示 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 原因是在IIS中 ...

  3. 前端播放m3u8格式视频

    一.前端播放m3u8格式视频 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta chars ...

  4. CentOS 6.4 播放avi格式的视频文件

    1. 需要先进行相关的yum源的导入: rpm -Uhv http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0. ...

  5. OpenCV学习:播放avi视频文件

    #if 0 //播放avi视频文件(IplImage) #include <opencv2/opencv.hpp> using namespace std; #pragma comment ...

  6. opencv读取并播放avi视屏

    视屏的本质是一些静态的图像的集合,opencv可以不断读取视屏中的图片,显示,就产生了类似电影的效果. 这样也就可以通过opencv对实时的视屏流进行处理了. #include "stdaf ...

  7. C#用ckplayer.js播放 MP4格式视频实现 边加载边播放

    MVC设计模式下 在View页面里面使用ckplayer.js 加载视频 ,在MP4格式视频上传之后 我发现某些视频可以边加载边播放 但是有一些又不行,找了下原因是因为视频的元数据信息在第一帧的时候就 ...

  8. 百度播放器SDK 播放MP4格式视频有声音无画面问题解决

    此处为记录解决过程. 所链接使用的MP4格式视频为codec id是mp4v-20.使用手机自带播放器可以播放,使用百度云媒体播放器不能无画面.经调试,Android Baidu-Cloud-Play ...

  9. 在vue项目中播放m3u8格式视频

    前言:最近公司在做一个线上会议的项目,要求后台网站播放m3u8格式的视频,查找部分资料,总结一下,方便后边查阅 1.在vue工程中安装以下依赖: cnpm install  video.js --sa ...

随机推荐

  1. Unity3d官方测试插件学习-单元测试,集成测试

    2016/11/27更新:官方的测试工具有许多问题,我修改了一个版本 https://git.oschina.net/Hont/UnitTest_Modifyed 支持切场景,异常不失败等 其实Uni ...

  2. 关于Xilinx MicroBlaze应用modelsim se仿真问题(EDK:3593 - Unable to locate the precompiled library microblaze_v8_50_c)

    ERROR:EDK:3593 - Unable to locate the precompiled library microblaze_v8_50_c. The file D:\Xilinx\14. ...

  3. 【Android】11.5 创建和管理Fragments

    分类:C#.Android.VS2015: 创建日期:2016-02-22 一.简介 想要管理activity中的fragment,可以用FragmentManager类来实现.通过在activity ...

  4. 【Android】7.8 MyDemos项目的结构和主界面相关代码

    分类:C#.Android.VS2015: 创建日期:2016-02-17 一.简介 上一讲已经说过,系统升级为Win10后,重新创建了一个新的项目:MyDemos,并把前7章合并到了这个项目中,这次 ...

  5. 使用Xcode 5创建Cocoa Touch Static Library(静态库)

    转自:http://blog.csdn.net/jymn_chen/article/details/21036035 首先科普一下静态库的相关知识: 程序编译一般需经预处理.编译.汇编和链接几个步骤. ...

  6. Oracle PLSQL Demo - 18.02.管道function[查询零散的字段组成list管道返回] [字段必须对上]

    --PACKAGE CREATE OR REPLACE PACKAGE test_141215 is TYPE type_ref IS record( ENAME ), SAL )); TYPE t_ ...

  7. Oracle“不等于号”与Null的情况

    今天突然才发现,Oracle中的“不等于操作符”是忽略Null的. 比如,查询comm不等于的300的记录,我会理所当然地使用where comm != 300 预想会返回包含Null的不等于300的 ...

  8. Linux shell 执行修改配置文件中的内容

    在开发的过程中可能Linux环境不一致需要适应本地环境的HOME目录,可以通过脚本来修改配置文件内容,写一个test.sh的脚本 在脚本里写入以下命令 sed -i “s#ftfts_com_serv ...

  9. Consumer

    Description FJ is going to do some shopping, and before that, he needs some boxes to carry the diffe ...

  10. TensorFlow机器学习框架-学习笔记-001

    # TensorFlow机器学习框架-学习笔记-001 ### 测试TensorFlow环境是否安装完成-----------------------------```import tensorflo ...