作者:Akira.Panda
参考书籍及资料
- OpenCV中文社区
- 《学习OpenCV》
内容提要
- 播放视频文件
- 使用播放控制条,控制播放进度
准备工作
准备一段视频格式最好为avi或者mp4格式的,不要RMVB格式。
实验1 播放视频,按ESC键退出
代码
/* * main.cpp * * Created on: 2011-10-26 * Author: Akira.Pan */ #include "highgui.h" int main(int argc, char ** argv) { char* fileName = "E:\\Media\\20110606(001).mp4"; char* windowTitle = "Vedio"; int ESC_KEY = 27; cvNamedWindow(windowTitle, CV_WINDOW_AUTOSIZE); CvCapture *capture = cvCreateFileCapture(fileName); IplImage* frame; while (1) { frame = cvQueryFrame(capture); if (!frame) { break; } cvShowImage(windowTitle, frame); int c = cvWaitKey(33); if (c == ESC_KEY) { break; } } cvReleaseCapture(&capture); cvDestroyWindow(windowTitle); return 0; }
代码解析
重要函数
- CvCapture * cvCreateFileCapture(char* filename ) 从指定路径中读取视频文件,相对的还有从设备中(设摄像头)读出。
- IplImage* cvQueryFrame( CvCapture* capture ) 获取下一帧图片,如果下一帧无图片为空则表示视频结束
- void cvReleaseCapture( CvCapture** capture ) 释放掉一段Capture资源
实验2 播放视频,按ESC键退出,上面有播放进度控制条
代码
/* * main.cpp * * Created on: 2011-10-26 * Author: Akira.Pan */ #include "highgui.h" int gSliderPos = 0; CvCapture* gCapture = NULL; void showPosFrame(int pos) { /*show the pos of frame*/ cvSetCaptureProperty(gCapture, CV_CAP_PROP_POS_FRAMES, pos); } int main(int argc, char ** argv) { char* fileName = "E:\\Media\\20110606(001).mp4"; char* windowTitle = "Vedio"; int ESC_KEY = 27; cvNamedWindow(windowTitle, CV_WINDOW_AUTOSIZE); CvCapture *capture = cvCreateFileCapture(fileName); gCapture = capture; int frameCount = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT); if (frameCount != 0) { cvCreateTrackbar("Track Bar", windowTitle, &gSliderPos, frameCount, showPosFrame); } IplImage* frame; while (1) { frame = cvQueryFrame(capture); if (!frame) { break; } cvShowImage(windowTitle, frame); gSliderPos++; if (gSliderPos % 150 == 0) cvSetTrackbarPos("Track Bar", windowTitle, gSliderPos); int c = cvWaitKey(50); if (c == ESC_KEY) { break; } } cvReleaseCapture(&capture); cvDestroyWindow(windowTitle); return 0; }
代码解析
重要函数
- int cvSetCaptureProperty( CvCapture* capture, int property_id, double value ); 设置Capture的一项属性,我们这里设置的当前的Frame的位置。使Capture获取的下一帧的位置变为Frame的Pos位置;
- double cvGetCaptureProperty( CvCapture* capture, int property_id );获取Capture一项属性,这里获取的是CV_CAP_PROP_FRAME_COUNT即所有Frame的总数;
- int cvCreateTrackbar( const char* trackbar_name, const char* window_name,
int* value, int count, CvTrackbarCallback on_change) 不要被函数签名吓住了其实这个函数也很简单。trackbar_name代表trackbar空间的标题名,和window一样也是一个key值,window_name表示是依附在哪个window上的,value代表当前控制条的位置计数,注意这个是一个引用传递值,随着拖动trackbar这个值都会发生变化;count表示最大的数值;on_change是一个回调函数即当用户拖动控制条的时候触发的一个函数。
一些说明
- trackbar和capture的机制
用户拖动了TrackBar之后,触发了on_click时间,程序执行回调函数showPosFrame(int);而该函数的主要作用是指定capture的播放的frame的位置。通过调整其播放帧数调整播放的进度。
相关推荐
装好opencv一直报下面这个错误,额外下了,希望对大家有用 LINK : fatal error LNK1181: 无法打开输入文件“opencv_world341.lib” 0
opencv_world310.lib opencv_world310d.lib
学习Opencv的简单例子.zip基于python语言,学习Opencv的简单例子.zip基于python语言,学习Opencv的简单例子.zip基于python语言,学习Opencv的简单例子.zip基于python语言,学习Opencv的简单例子.zip基于python语言,...
opencv 3.1.0的32位版本 opencv 3.1.0的X86版本 含bin文件和lib文件 ...以及opencv_calib3d310.dll,opencv_core310.dll,opencv_ffmpeg310.dll,opencv_flann310.dll,opencv_photo310.dll等20个dll文件
【opencv_world455_x86_vc17 库文件】 ...2. 动态链接库(opencv_videoio_ffmpeg455.dll / opencv_world455.dll / opencv_world455d.dll) 3. 静态连接库(opencv_world455.lib / opencv_world455d.lib)
适用于Windows64位,对应Python 3.6版本,OpenCV为3.4.1.15版本;内含有《opencv_contrib_python-3.4.1.15-cp36-cp36m-win_amd64.whl》和《opencv_python-3.4.1.15-cp36-cp36m-win_amd64.whl》两个文件
opencv_core2413.dll C#编程 。。。。。。。。。。。。。。。。。。。。。。。。。。
Visual Studio使用Opencv缺失opencv_imgproc450.dll导致无法运行,可下载该dll文件,放置在C:\Windows\System32目录下即可解决问题。注意要配置好项目相关依赖目录,具体方法可以参考其他博客。
opencv官方的本地库,用在windows平台
cmake编译不成功的话可以使用,opencv3.1.0的opencv2/photo.hpp
X86 的opencv4.2.0 VS2019 win10生成的库文件,可以用于Visual Studio 2019开发的项目中。然后进行相关的环境变量、属性等配置即可使用
OpenCV-2.2.0.tar.bz2 兼容性很好的哦,安装在linux中
在OpenCV中无法正常读取视频(opencv_ffmpeg249.dll)
opencv学习提取前景.zip
cmake 编译opencv 缺失opencv_ffmpeg.dll 、 opencv_ffmpeg_64.dll、ffmpeg_version.cmake等问题,只需替换下载替换.cache目录即可 : opencv-4.5.0\.cache
opencv_objdetect249.dll
opencv_world330.dll OpenCV3.3.0 release版本的编译链接库
opencv X86 32位 的静态链接库 lib 文件 opencv_core341.lib opencv_calib3d341.lib opencv_dnn341.lib opencv_features2d341.lib opencv_flann341.lib opencv_highgui341.lib opencv_imgcodecs341.lib opencv_...
cmake编译opencv+ffmpeg安装包下载。opencv源码文件配套cmake和ffmpeg,可以直接下载进行编译
OpenCV检测运动目标.zip资源matlab opencv运动目标检测程序资料OpenCV检测运动目标.zip资源matlab opencv运动目标检测程序资料OpenCV检测运动目标.zip资源matlab opencv运动目标检测程序资料OpenCV检测运动目标.zip...