目录
1、VideoCapture类
2、视频属性get()
3、视屏文件保存
1、VideoCapture类
2、视频属性get()
3、视屏文件保存
//视频的读取保存
int test3()
{VideoCapture video;//video.open("F:/testMap/lolTFT.mp4");//读取视频video.open(0);//读取摄像头if (!video.isOpened()){cout << "打开失败,请检查摄像头或文件" << endl;return -1;}cout << "视频帧率="<<video.get(CAP_PROP_FPS) << endl; cout << "视频宽度=" << video.get(CAP_PROP_FRAME_WIDTH) << endl;Mat img;video >> img;//获取图像//检测是否成功获取图像if (img.empty())//判断有没有读取图像成功{cout << "没有获取到图像"<< endl ;return -1;}bool isColpr = (img.type() == CV_8UC3);//判断相机(视频)类型是否为彩色VideoWriter writer;int codec = VideoWriter::fourcc('M', 'J','P','G'); //选择编码格式double fps = 25.0;//设置视频帧率string filename = "F:/testMap/live.avi";//保存的视频文件名称writer.open(filename,codec,fps,img.size(),true);//创建保存视频文件的视频流if (!writer.isOpened())//判断视频流是否创建成功{cout << "打开视频文件失败,请确实是否为合法输入" << endl;return -1;}//通过摄像头保存视屏while (1){//检测是否执行完毕if (!video.read(img))//判断能都继续从摄像头或者视频文件中读出一帧图像{cout << "摄像头断开连接或者视频读取完成" << endl;break;}writer.write(img); //把图像写入视频流writer << img;imshow("Live", img); //显示图像char c = waitKey(50);if (c == 27)//按ESC案件退出视频保存break;}//读取视频播放//while (true)//{// Mat frame;// video >> frame;//把视频当前帧传给frame// if (frame.empty())// {// break;// }// imshow("video",frame);// uchar c = waitKey(1000 / video.get(CAP_PROP_FPS) /2);//2倍速播放// //按q退出// if (c == 'q')// {// break;// }//}
}