必威体育Betway必威体育官网
当前位置:首页 > IT技术

opencv实例三:播放AVI格式视频

时间:2019-06-13 09:44:15来源:IT技术作者:seo实验室小编阅读:90次「手机版」
 

avi播放

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

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(1)
23     {
24         frame = cvQueryFrame(capture);//根据CvCapture指针提供的状态信息,抓取帧信息保存到IplImage指针里
25         if(!frame)break;
26         cvShowImage("AVI视频播放—博乐Bar",frame);
27         char c = cvWaitKey(33);//①控制帧率,控制视频播放的快慢;②接受键盘输入,返回值为该键盘对应的asiccII码
28         if(c==27) break; //十进制数27是键盘退出键Esc对应的asiccII码
29     }
30     //释放CvCapture指针的内存空间,同时关闭命名窗口
31     cvreleasecapture(&capture);
32     cvDestroyWindow("AVI视频播放—博乐Bar");
33     return 0;
34 }

View Code

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 = 0;
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 != 0){
30         cvCreateTrackbar(  //进度条
31             "Position",
32             "AVI播放_博乐Bar",
33             &g_slider_position,
34             frames,
35             onTrackbarSlide
36             );
37     }
38 
39     IplImage * frame;
40     while(1){
41         frame = cvQueryFrame(g_capture);//读取下一个影片帧率
42         if(!frame)break;
43         cvShowImage("AVI播放_博乐Bar",frame);
44         char c=cvWaitKey(33); //每读取一个视频片度就停止33毫秒,并且会收集键盘的输入
45         if(c == 27)break;//27就是对应键盘上的ESC建,如果没有按键盘的话C为-1
46     }
47 
48     cvReleaseCapture(&g_capture);
49     cvDestroyWindow("AVI播放_博乐Bar");
50 
51     return 0;
52 }

相关阅读

视频嵌入网站的作用有哪些

常言道一图胜千言,而视频比起图片所能承载的信息量更大。如果能够有效的使用视频,它对于用户的吸引力会非常明显——它可以更好的传

产品经理,你要了解一些音视频技术

在当今的移动互联网时代,直播类产品我们再熟悉不过了,比如看游戏直播、给美女主播打赏、听直播课程等。此外,伴随着抖音、快手等短视

微信时刻视频怎么用?怎么删除?

要说过去的2018年最火爆的是什么,那莫过于抖音短视频了,仅仅以十秒左右的视频引的广大用户不停的在上面消磨时间,微信从今年开始也是

前端实现多人视频聊天— WebRTC 实战(多人篇)

转自:https://juejin.im/post/5cbdc145e51d456e541b4cec

解决“夜总会”顽疾 小鱼易连云视频助企业开会效率指

&ldquo;夜总会&rdquo;顾名思义就是夜里总是开会现象的简称,这种现象在每家企业都在所难免,上到管理决策层,下到一线执行人员,开会到深

分享到:

栏目导航

推荐阅读

热门阅读