《学习OpenCV》第四章课后题4
来源:互联网 发布:电缆标识球数据 编辑:程序博客网 时间:2024/05/29 23:44
题目说明:创建一个程序读入和显示视频文件,并可以使用滑动条控制视频文件的播放。一个滑动条用来控制视频播放位置,以10为步长跳进。另一个滑动条用来控制停止/播放。
#include <highgui.h>#include <cv.h>int g_slider_position = 0;CvCapture* g_capture = NULL;int i = 0;int g_slider_position1 = 0;bool t = true;//回调函数1void onTrackbarSlide(int pos){ if(pos%10 != 0) { pos = pos - pos%10 ;//调整滚动条开始处均以10为单位 } cvSetCaptureProperty ( g_capture, CV_CAP_PROP_POS_FRAMES, pos ); i = pos;}//回调函数2void switch_callback(int position){ if(position == 0) { t = true;//使滚动条以10帧为步距进行播放 } else { t = false;//使滚动条一致播放当前帧 }}int main(){ cvNamedWindow("Video", CV_WINDOW_AUTOSIZE); g_capture = cvCaptureFromFile("E:/song.mp4"); int frames = (int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_COUNT ); if(frames != 0) { //控制视频播放的滑动条 cvCreateTrackbar( "播放进度条", "Video", &g_slider_position, frames, onTrackbarSlide); //控制视频停止播放的滑动条 cvCreateTrackbar( "播放停止条", "Video", &g_slider_position1, 1, switch_callback); } cvSetTrackbarPos("播放进度条", "Video", 1 ); cvSetTrackbarPos("播放停止条", "Video", 0 ); IplImage * frame; while( (frame= cvQueryFrame(g_capture)) != NULL) { //计算机获取视频需要一定时间,时间未知 char c = cvWaitKey(50); if(c == 27) break; cvShowImage("Video", frame); //设置滚动条移动步距 cvSetTrackbarPos("播放进度条", "Video", i); if(t) { i = i+ 10; // 10为步长 cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, i ); } else { cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, i ); } } cvReleaseCapture(&g_capture); //cvReleaseImage(&frame); /*没有必要通过cvReleaseImage()对这个返回的图像指针进行释放,当 CvCapture结构被释放后,每一帧图像所对应的内存空间即会被释放*/ cvDestroyWindow("Video"); return 0;}
运行结果:
引用:qdsclove的专栏
http://blog.csdn.net/stk_overflow/article/details/8760110
0 0
- 《学习OpenCV》第四章课后题4
- 《学习OpenCV》第四章课后题2
- 《学习OpenCV》第四章课后题6
- 《学习OpenCV》第四章课后题7
- 《学习OpenCV》第四章课后题8
- 《学习OpenCV》第四章课后题9
- 《学习opencv》第四章课后习题4
- 《学习OpenCV》第四章课后题1-a
- 《学习OpenCV》第四章课后题1-b&c
- 《学习OpenCV》第四章课后题3-a
- 《学习OpenCV》第四章课后题3-b
- 《学习OpenCV》第四章课后题5-a
- 《学习opencv》第四章课后习题1
- 《学习opencv》第四章课后习题2
- 《学习opencv》第四章课后习题3
- 《学习OpenCV》第三章课后题4
- 《学习OpenCV》第五章课后题4
- 《学习OpenCV》课后习题解答(第四章)(仅供参考)(不断更新)
- JVM垃圾收集
- 程序笔试题-const变量通过指针修改问题
- 跟我一起写 Makefile(五)
- latex的学习(持续更新)
- 使用FACE++的SDK来做一个颜值计算器
- 《学习OpenCV》第四章课后题4
- 微信支付流程图最安全最详细(ios自学笔记)
- Redis介绍及常用命令
- 专访阿里云RDS团队:WebScaleSQL是一个怎么样的数据库?
- android 截图保存位置不在已选择的“SD卡”中
- Database之二 函数
- Oracle 11g R2 x64无法使用sql developer的解决方案
- Jsp生成页面验证码的方法
- Linux正则表达式awk讲解