OpenCV学习篇之二 播放视频
来源:互联网 发布:java 动态方法 编辑:程序博客网 时间:2024/05/01 06:16
程序功能:播放视频和能通过进度条控制视频的播放
程序:
<span style="font-weight: normal;">// learn_playAVI2.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>#include<fstream>#include<cv.h>#include<opencv\highgui.h>using namespace std;int g_position = 0;CvCapture* g_capture = NULL;void onTrackbarSlide(int pos) {//定义回调函数,改变下一步要播放的位置cvSetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES,pos);}int main() {cvNamedWindow( "视频播放器", CV_WINDOW_AUTOSIZE );g_capture = cvCreateFileCapture("D:\\mm.mp4");int frames = (int) cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_COUNT);cvCreateTrackbar("Position","视频播放器",&g_position,frames,onTrackbarSlide);IplImage* frame;frames = 0;while(1) {frame = cvQueryFrame( g_capture );if( !frame ) break;//视频播放完时退出循环体 frames = (int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES);printf("\nFrame number=%d\n",frames);cvSetTrackbarPos("Position","视频播放器",frames);//改变滑块位置cvShowImage( "视频播放器", frame);//显示图像char c = (char)cvWaitKey(10);if( c == 27 ) break;//用户触发ESC按键后退出循环体}cvReleaseCapture( &g_capture );cvDestroyAllWindows();//关闭所有窗口,同时释放所有为窗口分配的内存。return(0);}</span>
程序运行结果:
程序分析:
使用OpenCV播放视屏,跟显示图像差不多,播放视频时要解决的问题就是如何循环地读取视频的一帧一帧的画面。cvCreateFileCapture()函数的功能是通过参数设置确定要读入视频文件,之后返回一个指向CvCapture结构的指针,CvCapture结构里包含了视频文件信息。cvGetCaptureProperty的作用是从CvCapture结构查询数据,当第二个参数为CV_CAP_PROP_FRAME_COUNT时可获取到视频文件中帧的总数,而当参数设置为CV_CAP_PROP_POS_FRAMES时可获取到将被下一步解压的帧索引,以0为起点。cvCreateTrackbar()函数的作用是创建滚动条,第三个参数是设定滑块位置的最大值,第四个指定当trackbar位置被改变的时候调用的回调函数。cvQueryFrame()函数的功能就是从摄像头或视频文件中获取一帧回来。
0 0
- OpenCV学习篇之二 播放视频
- 第二篇 学习OpenCV之视频播放
- OpenCV学习之播放视频
- opencv学习笔记(二)播放视频
- 学习Opencv之视频播放控制
- Android学习之二:视频播放器
- opencv篇之简单的播放视频
- 学习OpenCV系列文章二:视频播放(两种方式)
- opencv学习(二)avi格式视频播放
- opencv 之 视频播放控制
- opencv 之 视频播放控制
- opencv 之 视频播放控制
- opencv之视频播放控制
- opencv学习之第二章视频播放控制
- OpenCV学习(四)之播放一个AVI视频
- 【opencv学习之十九】滑条控制视频播放
- 【OpenCV学习笔记】1.2 播放AVI视频&视频播放控制
- 【opencv的学习】播放avi视频和视频播放控制
- 书籍下架情况分析
- uva 699 The Falling Leaves (二叉树)
- 学术休假----求二次方程的根
- three.js 源码注释(八十七)extras/FontUtils.js
- linux查找包装grep脚本
- OpenCV学习篇之二 播放视频
- POJ 3080 Blue Jeans
- banner图片轮转(利用jquery)
- 工作纪要---解决统计差别问题
- iOS-target/action模式,delegate模式
- C++——宏观把控
- 冬令营第一阶段周报--罗双
- LeetCode[Math]: Sqrt(x)
- Junit的各种断言