////////////////////////////////OPENCV1//////////////////////////////////////////////////////////
char tmpPath[512] = {0};
memset(tmpPath,0,512);
sprintf(tmpPath,"c:\\orientdoc\\video.avi");
IplImage* frame;
CvVideoWriter* video = NULL;
CvCapture *capture = NULL;// 视频获取结构,用来作为视频获取函数的一个参数
cvNamedWindow( "Example", CV_WINDOW_AUTOSIZE );//创建窗口,(名字,默认大小)
capture = cvCreateCameraCapture(0);//打开摄像头,从摄像头中获取视频
Sleep(2000);
frame = cvQueryFrame( capture );// 从摄像头中抓取并返回每一帧
if( !frame )
frame = cvQueryFrame( capture );
video=cvCreateVideoWriter(tmpPath,-1,10,cvSize(frame->width,frame->height));//CV_FOURCC('D', 'I', 'V', 'X')
if(!video)
{
return;
}
while(1)
{
frame = cvQueryFrame( capture );// 从摄像头中抓取并返回每一帧
if( !frame )
frame = cvQueryFrame( capture );
cvShowImage( "Example", frame );//在窗口上显示每一帧
cvWriteFrame(video,frame);
char c = cvWaitKey(100);//延时,每秒钟约33帧;符合人眼观看速度;
if( c == 27 ) break;//由于是死循环,而且没有控制台,当按下键盘esc键,将按键的ASCII值给C,如果C为ESC(ASCII 为27)循环退出退出循环;
}
cvReleaseVideoWriter(&video);
cvReleaseCapture( &capture );//释放内存;
cvDestroyWindow( "Example2" );//销毁窗口
///////////////////////////////////////////////OPENCV2///////////////////////////////////////////
cv::VideoCapture capture(0);
cv::Mat frame;
if(!capture.isOpened())
{
return;
}
char key;
char szVideoFileName[512];
char szImageFileName[512];
int count = 0;
char szVideo[1024];
sprintf(szVideo,"VIDEO");
char szImage[1024];
sprintf(szVideo,"VIDEO");
sprintf(szImage,"IMAGE");
sprintf(szVideoFileName,"c:\\OrientDoc\\video.avi");
sprintf(szImageFileName,"c:\\OrientDoc\\Picture%d.png");
cv::namedWindow(szVideo,1);
cv::namedWindow(szImage,1);
cv::VideoWriter writer(szVideoFileName, CV_FOURCC('D','I','V','X'), 10,cv::Size(640, 480), true);
//capture.set(CV_CAP_PROP_WHITE_BALANCE_BLUE_U, 0);
while(1)
{
key = cv::waitKey(100);
capture>>frame;
writer<<frame;
if(frame.data == NULL)//容错
{
continue;
}
cv::imshow(szVideo,frame);
if(key == 27) //按ESC键退出程序
break;
if(key == 32)//按空格键进行拍照
{
cv::imwrite(szImageFileName,frame);//图片保存到本工程目录中
cv::imshow(szImage,frame);
}
}
writer.release();
char tmpPath[512] = {0};
memset(tmpPath,0,512);
sprintf(tmpPath,"c:\\orientdoc\\video.avi");
IplImage* frame;
CvVideoWriter* video = NULL;
CvCapture *capture = NULL;// 视频获取结构,用来作为视频获取函数的一个参数
cvNamedWindow( "Example", CV_WINDOW_AUTOSIZE );//创建窗口,(名字,默认大小)
capture = cvCreateCameraCapture(0);//打开摄像头,从摄像头中获取视频
Sleep(2000);
frame = cvQueryFrame( capture );// 从摄像头中抓取并返回每一帧
if( !frame )
frame = cvQueryFrame( capture );
video=cvCreateVideoWriter(tmpPath,-1,10,cvSize(frame->width,frame->height));//CV_FOURCC('D', 'I', 'V', 'X')
if(!video)
{
return;
}
while(1)
{
frame = cvQueryFrame( capture );// 从摄像头中抓取并返回每一帧
if( !frame )
frame = cvQueryFrame( capture );
cvShowImage( "Example", frame );//在窗口上显示每一帧
cvWriteFrame(video,frame);
char c = cvWaitKey(100);//延时,每秒钟约33帧;符合人眼观看速度;
if( c == 27 ) break;//由于是死循环,而且没有控制台,当按下键盘esc键,将按键的ASCII值给C,如果C为ESC(ASCII 为27)循环退出退出循环;
}
cvReleaseVideoWriter(&video);
cvReleaseCapture( &capture );//释放内存;
cvDestroyWindow( "Example2" );//销毁窗口
///////////////////////////////////////////////OPENCV2///////////////////////////////////////////
cv::VideoCapture capture(0);
cv::Mat frame;
if(!capture.isOpened())
{
return;
}
char key;
char szVideoFileName[512];
char szImageFileName[512];
int count = 0;
char szVideo[1024];
sprintf(szVideo,"VIDEO");
char szImage[1024];
sprintf(szVideo,"VIDEO");
sprintf(szImage,"IMAGE");
sprintf(szVideoFileName,"c:\\OrientDoc\\video.avi");
sprintf(szImageFileName,"c:\\OrientDoc\\Picture%d.png");
cv::namedWindow(szVideo,1);
cv::namedWindow(szImage,1);
cv::VideoWriter writer(szVideoFileName, CV_FOURCC('D','I','V','X'), 10,cv::Size(640, 480), true);
//capture.set(CV_CAP_PROP_WHITE_BALANCE_BLUE_U, 0);
while(1)
{
key = cv::waitKey(100);
capture>>frame;
writer<<frame;
if(frame.data == NULL)//容错
{
continue;
}
cv::imshow(szVideo,frame);
if(key == 27) //按ESC键退出程序
break;
if(key == 32)//按空格键进行拍照
{
cv::imwrite(szImageFileName,frame);//图片保存到本工程目录中
cv::imshow(szImage,frame);
}
}
writer.release();