opencv3.0提供了专门的摄像头的VideoCapture类,使用时直接实例化即可。
VideoCapture cap;
cap可以用来打开已有的视频文件,也可以用来打开摄像头录制视频。
cap.open(filename);//filename 是已有视频文件的路径
cap.open(0);//0是调用的摄像头的编号
opencv3.0 提供了专用的保存视频的类VideoWriter,使用时直接实例化即可。
VideoWriter writer;
writer.open(filename,CV_FOURCC('P','I','M','1'),30.0.Size(640,480));
//filename是视频文件的完整路径"XX//xx//xxx.avi",CV_FOURCC('P','I','M','1')是视频的编码方式,30.0是视频的帧率,Size(640,480)是每一帧图像的大小
视频的帧率和每一帧图像的大小,也可以直接通过以下方式获取
VideoCapture cap;
cap.open(filename);
double rate = cap.get(CV_CAP_PROP_FPS);//获取帧率
cap.get(CV_CAP_PROP_FRAME_HEIGHT);//获取视频高度
cap.get(CV_CAP_PROP_FRAME_WIDTH);//获取宽度
定义鼠标事件----画直线
bool got_line = false;
//全局变量
Point beginPoint = Point(0, 0);//初始化的(0,0)
bool got_beigin_point = false;
Point endPoint = Point(0, 0);//初始化(0,0)
void mouseLineHandler(int event, int x, int y, int flags, void *param)
{
switch (event)
{
case CV_EVENT_LBUTTONDOWN:
beginPoint = Point(x, y);
endPoint = beginPoint;
got_beigin_point = true;
break;
case CV_EVENT_MOUSEMOVE:
if (got_beigin_point)
{
endPoint = Point(x, y);
}
break;
case CV_EVENT_LBUTTONUP:
got_line = true;