一、
CvCapture结构体:
CvCapture是一个结构体,用来保存图像捕获的信息,就像一种数据类型(如int,char等)只是存放的内容不同,在OpenCv中,它最大的做用就是处理视频时(程序是按一帧一帧读取),让程序读下一帧的位置,CvCapture结构中,每获取一帧后,这些信息都将被更新,获取下一帧回复。
二、
如下是OpenCV属性的一些宏定义:
CV_CAP_PROP_POS_MSEC //影片目前位置,为毫秒数或者视频获取时间戳
CV_CAP_PROP_POS_FRAMES //将被下一步解压/获取的帧索引,以0为起点
CV_CAP_PROP_POS_AVI_RATIO //视频文件的相对位置(0 - 影片的开始,1 - 影片的结尾)
CV_CAP_PROP_FRAME_WIDTH //视频流中的帧宽度
CV_CAP_PROP_FRAME_HEIGHT //视频流中的帧高度
CV_CAP_PROP_FPS //帧率
CV_CAP_PROP_FOURCC //表示codec的四个字符
CV_CAP_PROP_FRAME_COUNT // 视频文件中帧的总数
CV_CAP_PROP_FORMAT
CV_CAP_PROP_MODE
CV_CAP_PROP_BRIGHTNESS
CV_CAP_PROP_CONTRAST
CV_CAP_PROP_SATURATION
CV_CAP_PROP_HUE
CV_CAP_PROP_GAIN
CV_CAP_PROP_EXPOSURE
CV_CAP_PROP_CONVERT_RGB
CV_CAP_PROP_WHITE_BALANCE
CV_CAP_PROP_RECTIFICATIONios
#include "stdafx.h" #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include "cv.h" using namespace cv; using namespace std; int g_slider_position = 0,temp;//滚动位置条变量和记录变量 CvCapture *g_captrue = NULL;//首先建立一个结构体指针并置空 void onTrackbarSlide(int pos)//定义建立滚动条函数 { cvSetCaptureProperty(g_captrue, CV_CAP_PROP_POS_FRAMES, pos); temp = g_slider_position; } int main(int argc,char **argv) { cvNamedWindow("title",CV_WINDOW_AUTOSIZE); g_captrue = cvCreateFileCapture("sample.avi"); int frames = (int)cvGetCaptureProperty(g_captrue, CV_CAP_PROP_FRAME_COUNT); if (frames != 0) { cvCreateTrackbar("Position","title", &g_slider_position, frames, onTrackbarSlide); } IplImage *frame; while (1) { frame = cvQueryFrame(g_captrue); if (!frame)//视频播放完毕就退出 break; cvShowImage("title", frame);//显示当前一帧图像 char c = cvWaitKey(30);//等30ms cvSetTrackbarPos("Position","title",temp++); //进度条位置++ if (c == 27)//若获取按键Esc(内码为27)则返回 break; } cvReleaseCapture(&g_captrue);//释放指针 cvDestroyWindow("title");//删除视频窗口 return 0; }