在opencv 4版本下调用摄像头显示画面,并在按下p键后将当前画面储存到指定的/root/20204367yyh路径下并根据保存顺序从photo1开始进行命名,直到按q键后关闭摄像头窗口。请进行程序编写并给出Makefile文件并说明如何使用
时间: 2023-05-27 08:04:48 浏览: 105
以下是程序编写和Makefile文件:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>
using namespace std;
using namespace cv;
int main()
{
// 打开摄像头
VideoCapture capture(0);
if (!capture.isOpened())
{
cout << "Failed to open the camera." << endl;
return -1;
}
// 创建窗口
namedWindow("Camera", WINDOW_AUTOSIZE);
// 保存的文件名计数器
int count = 1;
while (1)
{
Mat frame;
capture >> frame; // 捕获一帧图像
imshow("Camera", frame); // 显示图像
// 按下p键保存当前图像
if (waitKey(30) == 'p')
{
string filename = "/root/20204367yyh/photo" + to_string(count) + ".png";
imwrite(filename, frame);
cout << "Saved photo " << filename << endl;
count++;
}
// 按下q键退出
if (waitKey(30) == 'q')
{
break;
}
}
// 关闭窗口和摄像头
destroyWindow("Camera");
capture.release();
return 0;
}
```
Makefile文件:
```makefile
CC=g++ # 编译器
CFLAGS=-I/usr/include/opencv4 -std=c++11 # 编译选项
LIBS=-lopencv_core -lopencv_highgui -lopencv_videoio # 链接的库
all: camera
camera: camera.cpp
$(CC) $(CFLAGS) -o camera camera.cpp $(LIBS)
clean:
rm -f camera
```
使用方法:
1. 将程序保存为`camera.cpp`和`Makefile`。
2. 切换到程序所在的目录。
3. 运行`make`编译程序。
4. 运行`./camera`启动摄像头窗口。
5. 按下p键保存当前画面到指定路径下。
6. 按下q键关闭摄像头窗口。
阅读全文