Opencv step by step - 视频进度条
2014-10-28 21:52
309 查看
上一个博文只是进行了视频播放,这里加上进度条。
下面是修改好的代码:
#include <cv.h>
#include <highgui.h>
/*
* tan@ubuntu:~/cv$ g++ AVIPlayerPlus.cpp -o AVIPlayerPlus `pkg-config opencv --cflags --libs`
* tan@ubuntu:~/cv$ ./AVIPlayerPlus ../apple.avi
*
*/
#define KEY_ESC 27
#define DELAY_TIME 33
CvCapture *g_capture = NULL;
void onTrackbarSlide(int cur_pos) {
/* set capture to some position */
cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, cur_pos);
}
int main(int argc,char **argv)
{
int slider_position = 0;
cvNamedWindow("good_player", CV_WINDOW_AUTOSIZE);
g_capture = cvCreateFileCapture(argv[1]);
/* create trackbar UI */
int frame_count = cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
if(0 != frame_count)
cvCreateTrackbar("bar_name", "good_player", &slider_position,
frame_count, onTrackbarSlide);
/* Real function */
IplImage *frame;
while (true) {
frame = cvQueryFrame(g_capture);
if (!frame)
break;
cvShowImage("good_player",frame);
char c = cvWaitKey(DELAY_TIME);
if (KEY_ESC == c)
break;
}
cvReleaseCapture(&g_capture);
cvDestroyWindow("good_player");
return 0;
}
这里的关键函数是cvCreateTrackbar和
onTrackbarSlide
这两个函数分别创建了了进度条,另一个函数是cvCreateTrackbar的回调函数。
下面是效果(ubuntu默认不支持的AVI可以播放啦!):
下面是修改好的代码:
#include <cv.h>
#include <highgui.h>
/*
* tan@ubuntu:~/cv$ g++ AVIPlayerPlus.cpp -o AVIPlayerPlus `pkg-config opencv --cflags --libs`
* tan@ubuntu:~/cv$ ./AVIPlayerPlus ../apple.avi
*
*/
#define KEY_ESC 27
#define DELAY_TIME 33
CvCapture *g_capture = NULL;
void onTrackbarSlide(int cur_pos) {
/* set capture to some position */
cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, cur_pos);
}
int main(int argc,char **argv)
{
int slider_position = 0;
cvNamedWindow("good_player", CV_WINDOW_AUTOSIZE);
g_capture = cvCreateFileCapture(argv[1]);
/* create trackbar UI */
int frame_count = cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
if(0 != frame_count)
cvCreateTrackbar("bar_name", "good_player", &slider_position,
frame_count, onTrackbarSlide);
/* Real function */
IplImage *frame;
while (true) {
frame = cvQueryFrame(g_capture);
if (!frame)
break;
cvShowImage("good_player",frame);
char c = cvWaitKey(DELAY_TIME);
if (KEY_ESC == c)
break;
}
cvReleaseCapture(&g_capture);
cvDestroyWindow("good_player");
return 0;
}
这里的关键函数是cvCreateTrackbar和
onTrackbarSlide
这两个函数分别创建了了进度条,另一个函数是cvCreateTrackbar的回调函数。
下面是效果(ubuntu默认不支持的AVI可以播放啦!):
相关文章推荐
- Opencv step by step - 视频进度条
- Opencv step by step - 加载视频
- Opencv step by step - 加载视频
- Opencv step by step - 视频变换
- Opencv step by step - 视频变换
- Opencv学习之--进度条控制视频
- Opencv step by step - ROI
- Opencv step by step - 图像载入
- Opencv中视频播放与进度控制
- Opencv step by step - ROI
- Opencv step by step - 图像载入
- Opencv step by step - 鼠标事件
- OpenCV播放视频,并可设置进度
- Opencv step by step - 基本数据类型
- Opencv step by step - 图像融合
- Opencv step by step - 鼠标事件
- A step-by-step guide to the use of the Intel OpenCV library and the Microsoft DirectShow technology
- Opencv学习_3 (Opencv读取视频 &视频进度控制 &写视频)
- 微软VB.NET Step By Step系列课程视频
- Opencv step by step - 图像融合