《学习OpenCV》例2-3课后练习(page24)
2014-02-15 17:14
387 查看
《学习OpenCV》第24页,例2-3课后练习:实现滚动条随着视频播放自动移动。
#include "cv.h"
#include "highgui.h"
/*全局变量*/
int g_slider_position = 0; //滑动条当前位置
CvCapture* g_capture = NULL;//视频的帧图像
//*****************************************************
//滑动条回调函数:显示视频的进度
//pos :滑动条当前位置
//*****************************************************
void onTrackbarSlide( int pos )
{
cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, pos );
}
int main()
{
cvNamedWindow( "task_2-3", CV_WINDOW_AUTOSIZE );
g_capture = cvCreateFileCapture( "task_2-3.mp4" );
int frames = (int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_COUNT );
/*获得总帧数,也就是滚动条位置的最大值,这个函数的功能和第二个参数有关*/
/*如果此处滚动条没有被拖动,此语句的作用就是在窗口上创建了一个滚动条,其位置为0,即在初始位置*/
if (g_capture!=0)
{
/*当滚动条被拖动时,opencv会自动将当前位置所代表的值传个指针所指向的整数,也就是说当滚动条被拖动时,g_slider_position的值是在改变*/
cvCreateTrackbar( "Position", "task_2-3", &g_slider_position, frames, onTrackbarSlide );
}
IplImage* frame;
while (1)
{
/*从视频中提取帧图像*/
frame = cvQueryFrame( g_capture );
if (!frame)
break;
cvShowImage( "task_2-3", frame );
/*每次循环都在当前位置重新创造一个滚动条,也就是滚动条随着视频播放自动移动(实现了书本的思考练习)*/
cvCreateTrackbar( "Position", "task_2-3", &g_slider_position, frames, onTrackbarSlide );
g_slider_position++;
/*按ESC键退出*/
char c = cvWaitKey(33);
if (c==27)
break;
}
/*释放内存,销毁窗口*/
cvReleaseCapture( &g_capture );
cvDestroyWindow( "task_2-3" );
return(0);
}
#include "cv.h"
#include "highgui.h"
/*全局变量*/
int g_slider_position = 0; //滑动条当前位置
CvCapture* g_capture = NULL;//视频的帧图像
//*****************************************************
//滑动条回调函数:显示视频的进度
//pos :滑动条当前位置
//*****************************************************
void onTrackbarSlide( int pos )
{
cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, pos );
}
int main()
{
cvNamedWindow( "task_2-3", CV_WINDOW_AUTOSIZE );
g_capture = cvCreateFileCapture( "task_2-3.mp4" );
int frames = (int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_COUNT );
/*获得总帧数,也就是滚动条位置的最大值,这个函数的功能和第二个参数有关*/
/*如果此处滚动条没有被拖动,此语句的作用就是在窗口上创建了一个滚动条,其位置为0,即在初始位置*/
if (g_capture!=0)
{
/*当滚动条被拖动时,opencv会自动将当前位置所代表的值传个指针所指向的整数,也就是说当滚动条被拖动时,g_slider_position的值是在改变*/
cvCreateTrackbar( "Position", "task_2-3", &g_slider_position, frames, onTrackbarSlide );
}
IplImage* frame;
while (1)
{
/*从视频中提取帧图像*/
frame = cvQueryFrame( g_capture );
if (!frame)
break;
cvShowImage( "task_2-3", frame );
/*每次循环都在当前位置重新创造一个滚动条,也就是滚动条随着视频播放自动移动(实现了书本的思考练习)*/
cvCreateTrackbar( "Position", "task_2-3", &g_slider_position, frames, onTrackbarSlide );
g_slider_position++;
/*按ESC键退出*/
char c = cvWaitKey(33);
if (c==27)
break;
}
/*释放内存,销毁窗口*/
cvReleaseCapture( &g_capture );
cvDestroyWindow( "task_2-3" );
return(0);
}
相关文章推荐
- 基于QT5的opencv学习之《学习opencv课后练习3-7》
- C++ Primer 课后练习9.50
- 《学习OpenCV》课后习题解答(第四章)(仅供参考)(不断更新)
- 《学习opencv》第四章课后习题2
- Python核心编程:课后练习5.4
- Visual C++ 2012入门经典(第6版) 课后练习(前言)
- 《学习OpenCV》第八章轮廓课后题
- 《学习OpenCV(中午版)》第3章 练习3和练习4
- 笔记练习:《Javascript入门经典(第5版)》page150_12.8_Practice
- 《学习OpenCV(中文版)》第4章 练习3b
- 课后练习2(温度转换)
- C++ primer plus第六版课后编程练习答案:6.3
- C Primer Plus 第七章 课后练习……2015.4.26
- 高级编程技术作业第四周 第七章课后练习
- Primer Plus 12章课后编程练习 5
- 《Python编程:从入门到实践》课后练习8-1到8-14
- C++primer plus第六版课后编程练习答案2.6
- C++primer plus第六版课后编程练习答案4.1
- C++primer plus第六版课后编程练习答案4.10
- C++primer plus第六版课后编程练习答案6.4