opencv实例三:播放AVI格式视频
一、不带滚动条的视频读取播放。
1、原理介绍:视频的本质是一些静态的图像的集合,opencv可以不断读取视屏中的图片,显示,就可以实时的视频流进行处理了。
2、代码如下:
/***********************************************************************************
开发环境:opencv3.0.0 + vs2012旗舰版;win7正式版32位
功能描述:播放AVI格式视频
作者信息:博乐Bar
开发时间:20150922
***********************************************************************************/
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std; int main()
{
cvNamedWindow("AVI视频播放—博乐Bar");//创建一个窗口,固定大小不随图像改变
/**********
cvCreateFileCapture函数读取路径下的视频文件,把帧信息指针返回到CvCapture结构体指针中,
包含关于要读入的avi文件的状态信息此次调用返回avi视频文件的开头。
**********/
CvCapture * capture = cvCreateFileCapture("video.avi");
IplImage * frame; //需要不断循环读取下一帧,因此需要while循环,只有当用户按键或者视频读取完毕时才跳出循环
while()
{
frame = cvQueryFrame(capture);//根据CvCapture指针提供的状态信息,抓取帧信息保存到IplImage指针里
if(!frame)break;
cvShowImage("AVI视频播放—博乐Bar",frame);
char c = cvWaitKey();//①控制帧率,控制视频播放的快慢;②接受键盘输入,返回值为该键盘对应的asiccII码
if(c==) break; //十进制数27是键盘退出键Esc对应的asiccII码
}
//释放CvCapture指针的内存空间,同时关闭命名窗口
cvReleaseCapture(&capture);
cvDestroyWindow("AVI视频播放—博乐Bar");
return ;
}
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、代码如下:
/***********************************************************************************
开发环境:opencv3.0.0 + vs2012旗舰版;win7正式版32位
功能描述:播放AVI格式视频
作者信息:博乐Bar
开发时间:20150922
***********************************************************************************/
#include <opencv2/opencv.hpp> int g_slider_position = ;
CvCapture * g_capture =NULL; void onTrackbarSlide(int pos){ //再拖动滚动条的时候,滚动条的位置会被作为int数字传入
cvSetCaptureProperty(
g_capture,
CV_CAP_PROP_POS_FRAMES,
pos
);
} int main(){
cvNamedWindow("AVI播放_博乐Bar",CV_WINDOW_AUTOSIZE);//申请可以自动调节大小的窗口Example1
g_capture=cvCreateFileCapture("video.avi");//读取avi格式的影片 int frames = (int) cvGetCaptureProperty(
g_capture,
CV_CAP_PROP_FRAME_COUNT
); if(frames != ){
cvCreateTrackbar( //进度条
"Position",
"AVI播放_博乐Bar",
&g_slider_position,
frames,
onTrackbarSlide
);
} IplImage * frame;
while(){
frame = cvQueryFrame(g_capture);//读取下一个影片帧率
if(!frame)break;
cvShowImage("AVI播放_博乐Bar",frame);
char c=cvWaitKey(); //每读取一个视频片度就停止33毫秒,并且会收集键盘的输入
if(c == )break;//27就是对应键盘上的ESC建,如果没有按键盘的话C为-1
} cvReleaseCapture(&g_capture);
cvDestroyWindow("AVI播放_博乐Bar"); return ;
}
opencv实例三:播放AVI格式视频的更多相关文章
- 调用opencv相关函数,从视频流中提取出图片序列&&&&jpg图片序列,转化成avi格式视频
/************************ @HJ 2017/3/30 参考http://blog.sina.com.cn/s/blog_4b0020f301010qcz.html修改的代码 ...
- Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型
转自原文 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 播放mp4格式的时候提示 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 原因是在IIS中 ...
- 前端播放m3u8格式视频
一.前端播放m3u8格式视频 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta chars ...
- CentOS 6.4 播放avi格式的视频文件
1. 需要先进行相关的yum源的导入: rpm -Uhv http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0. ...
- OpenCV学习:播放avi视频文件
#if 0 //播放avi视频文件(IplImage) #include <opencv2/opencv.hpp> using namespace std; #pragma comment ...
- opencv读取并播放avi视屏
视屏的本质是一些静态的图像的集合,opencv可以不断读取视屏中的图片,显示,就产生了类似电影的效果. 这样也就可以通过opencv对实时的视屏流进行处理了. #include "stdaf ...
- C#用ckplayer.js播放 MP4格式视频实现 边加载边播放
MVC设计模式下 在View页面里面使用ckplayer.js 加载视频 ,在MP4格式视频上传之后 我发现某些视频可以边加载边播放 但是有一些又不行,找了下原因是因为视频的元数据信息在第一帧的时候就 ...
- 百度播放器SDK 播放MP4格式视频有声音无画面问题解决
此处为记录解决过程. 所链接使用的MP4格式视频为codec id是mp4v-20.使用手机自带播放器可以播放,使用百度云媒体播放器不能无画面.经调试,Android Baidu-Cloud-Play ...
- 在vue项目中播放m3u8格式视频
前言:最近公司在做一个线上会议的项目,要求后台网站播放m3u8格式的视频,查找部分资料,总结一下,方便后边查阅 1.在vue工程中安装以下依赖: cnpm install video.js --sa ...
随机推荐
- Android开发15——给TextView加上滚动条
给TextView加上滚动条非常简单,只需要把TextView标签放在ScrollView标签中 <ScrollView android:layout_width="wrap_cont ...
- Sampling and Estimation
Sampling and Estimation Sampling Error Sampling error is the difference between a sample statistic(t ...
- [na]tftp从linux下载文件
1,背景: 当我们ssh到一台linux上时候,从linux上下载一些文件,方案如下: 1.1通过sftp:通过win7 ftp客户端连接到linux去下载文件. 1.2通过tftp 2,问题 有些l ...
- SQL Server 备份数据库到指定路径,任务实现
--Description:备份指定数据到指定路径,第一次完整备份.每月1号完整备份.每周一完整,每天增量备份--====================================ALTER p ...
- 设置PDF文件默认缩放比例
- Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档
前言 基本环境 Django版本:1.11.8 Python版本:3.6 OS: win10 x64 本文摘要 提供了常用的Django内置过滤器的详细介绍,包括过滤器的功能.语法.代码和效果示例. ...
- tab栏切换fengz
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- LeetCode: Rotate Image 解题报告
Rotate ImageYou are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees ( ...
- egret学习记录
最近h5小游戏比较流行,本来我是做cocos2dx的,一开始想用它的js版. 可惜看着js真是头大.于是选择了egret,egret采用typescript,学过面向对象的,上手还是比较快的,而且ap ...
- C# 异常类型
Exception 类 描述 SystemException 其他用户可处理的异常的基本类 ArgumentException 方法的参数是非法的 ArgumentNullException 一个空 ...