cpp为例
#include <opencv2/opencv.hpp>
#include <string>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap(0);
if (!cap.isOpened())
{
cout << "Could not open the input video " << endl;
return -1;
}
Mat frame;
string imgname;
int f = 1;
while (1)
{
cap >> frame;
if (frame.empty())
break;
imshow("Camera", frame);
static char key = waitKey(1);
if (key == 'q' || key == 'Q') // 退出运行
break;
if (key == 'k' || key == 'K') // 截取图片
{
cout << "frame:" << f << endl;
imgname = "snapPhotos/"+to_string(f++) + ".jpg";
imwrite(imgname, frame);
}
}
return 0;
}
第32行为相对路径,当前工作目录为根目录(指VS的工程根目录、vscode打开的文件夹目录)。
也可以使用绝对路径,如
imgname = "d:/photos/1.jpg";
imwrite(imgname, frame);
注:imwrite()不会创建文件夹
如上相对路径的例子中,理想情况下图片会保存到snapPhotos文件夹内。但若不存在snapPhotos文件夹,则 不会做任何事(也不会输出任何报错信息)。若已存在此文件夹,则可以正常保存。该文件夹可通过其他方式创建(如手动鼠标或命令行创建,各大语言也都有文件相关操作库)
这段代码演示了如何使用OpenCV的VideoCapture类从摄像头获取视频流,并在用户按下k键时保存帧到snapPhotos文件夹。如果文件夹不存在,程序不会创建它,但也不会给出错误信息。用户可以通过按下q键退出程序。
1119

被折叠的 条评论
为什么被折叠?



