实现代码:
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
//定义VideoCapture对象选择摄像头
VideoCapture capture(0);
//判断是否出错
if (!capture.isOpened())
{
cout << "some thing wrong" << endl;
system("pause");
return -1;
}
//获取视频相关信息---分辨率(宽、高)
int frameHeight = capture.get(CV_CAP_PROP_FRAME_HEIGHT);
int frameWidth = capture.get(CV_CAP_PROP_FRAME_WIDTH);
cout << "this video is :" << frameWidth << "*" << frameHeight << endl;
//定义writer对象
VideoWriter outputVideo;
outputVideo.open("save.avi", -1, 25.0, Size(frameWidth, frameHeight), true);
//判断open writer对象是否出错
if (!outputVideo.isOpened()){
cout << "fail to open the videowriter" << endl;
system("pause");
return -1;
}
//循环读取一帧
Mat frameImg;
long nCount = 1;
while (1){
//输出当前帧数
cout << "Current frame" << nCount << endl;
capture >> frameImg;
//判断是否读完
if (!frameImg.empty()){
imshow("frame", frameImg);
}
else{
break;
}
//按Q退出
if (char(waitKey(40) == 'q')){
break;
}
outputVideo << frameImg;//将该帧写入文件
nCount++;
}
//释放摄像头
capture.release();
return 0;
}