void processVideo(VideoCapture &capture){
int n = 0;
char filename[200];
string window_name = "video | q or esc to quit";
cout << " \n\t按下【Space】空格键可以截图,图片将存放在工程目录下。\n\n\t【Esc】和【q】键 - 退出程序。 " << endl;
namedWindow(window_name, CV_WINDOW_KEEPRATIO); //resizable window;
Mat frame;
for (;;){
capture >> frame;
if (frame.empty())
break;
Mat gray;
cvtColor(frame, gray, CV_BGR2GRAY);
vector<string>codes;
Mat corners;
findDataMatrix(gray, codes, corners);
drawDataMatrixCodes(frame, codes, corners);
imshow(window_name, frame);
char key = (char)waitKey(1);
switch (key)
{
case 'q':
case 'Q':
case 27:break;
case ' ':
sprintf(filename, "视频截图%.3d.jpg", ++n);
imwrite(filename, frame);
cout << "\n\t>保存了 " << filename << "文件到工程目录下" << endl;
break;
default:
break;
}
}
主程序:
void DisImg(){
VideoCapture capture(0);
if (!capture.isOpened()){
cerr << "Failed to open a video device or video file!\n" << endl;
}
return processVideo(capture);
}