1#include <iostream> 2#include <cv.h> 3#include <cvaux.h> 4#include <highgui.h> 5#pragma comment(lib, "ml.lib") 6#pragma comment(lib, "cv.lib") 7#pragma comment(lib, "cvaux.lib") 8#pragma comment(lib, "cvcam.lib") 9#pragma comment(lib, "cxcore.lib") 10#pragma comment(lib, "cxts.lib") 11#pragma comment(lib, "highgui.lib") 12#pragma comment(lib, "cvhaartraining.lib") 13 14using namespace std; 15int main() 16{ 17 CvCapture* capture = cvCaptureFromCAM(-1); 18 CvVideoWriter* video = NULL; 19 IplImage* frame = NULL; 20 int n; 21 if(!capture) //如果不能打开摄像头给出警告 22 { 23 std::cout << "Can not open the camera." << std::endl; 24 return -1; 25 } 26 else 27 { 28 frame = cvQueryFrame(capture); //首先取得摄像头中的一帧 29 video = cvCreateVideoWriter("camera.avi", CV_FOURCC('X', 'V', 'I', 'D'), 25, 30 cvSize(frame->width,frame->height)); //创建CvVideoWriter对象并分配空间 31 //保存的文件名为camera.avi,编码要在运行程序时选择,大小就是摄像头视频的大小,帧频率是32 32 if(video) //如果能创建CvVideoWriter对象则表明成功 33 { 34 cout<<"VideoWriter has created."<<endl; 35 } 36 cvNamedWindow("Camera Video",1); //新建一个窗口 37 int i = 0; 38 while(i <= 200) // 让它循环200次自动停止录取 39 { 40 frame = cvQueryFrame(capture); //从CvCapture中获得一帧 41 if(!frame) 42 { 43 std::cout << "Can not get frame from the capture." << std::endl; 44 break; 45 } 46 n = cvWriteFrame(video, frame); //判断是否写入成功,如果返回的是1,表示写入成功 47 std::cout << n << std::endl; 48 cvShowImage("Camera Video",frame); //显示视频内容的图片 49 i++; 50 if(cvWaitKey(2) > 0) 51 break; //有其他键盘响应,则退出 52 } 53 cvReleaseVideoWriter(&video); 54 cvReleaseCapture(&capture); 55 cvDestroyWindow("Camera Video"); 56 } 57 return 0; 58}
OpenCV调用摄像头录像并保存下来
Stella981
2021-10-11
1082 0 0
点赞
收藏
评论区
加载中...