在opencv 4中调用摄像头显示画面,并在按下p键后将当前画面储存到指定的/root/20204367yyh路径下并根据保存顺序从photo1开始进行命名,直到按q键后关闭摄像头窗口。请进行程序编写并给出makefile文件并说明如何使用,注意使用python语言
时间: 2023-05-29 18:02:33 浏览: 106
以下是使用Python编写程序的示例代码:
```python
import cv2
import os
# 定义保存路径和计数器
save_dir = "/root/20204367yyh"
counter = 1
# 创建保存目录(如果不存在)
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取一帧画面
ret, frame = cap.read()
# 显示画面
cv2.imshow("Camera", frame)
# 等待键盘输入
key = cv2.waitKey(1)
# 如果按下p键,则保存画面
if key == ord("p"):
# 生成文件名
filename = f"photo{counter}.jpg"
filepath = os.path.join(save_dir, filename)
# 保存画面
cv2.imwrite(filepath, frame)
# 更新计数器
counter += 1
# 如果按下q键,则退出循环
if key == ord("q"):
break
# 关闭摄像头和窗口
cap.release()
cv2.destroyAllWindows()
```
在该代码中,我们首先定义了保存路径和计数器。然后创建了目录(如果不存在)。接着进入无限循环,不断读取摄像头画面并显示在窗口中。如果用户按下p键,则将当前画面保存到指定的目录下,文件名为photoX.jpg,X为当前计数器的值。保存完毕后,计数器加1。如果用户按下q键,则退出循环并关闭摄像头和窗口。
以下是makefile文件示例:
```
.PHONY: all run clean
APP_NAME = camera
all: $(APP_NAME)
$(APP_NAME): $(APP_NAME).py
python3 -m pip install opencv-python-headless
chmod +x $(APP_NAME).py
run:
./$(APP_NAME).py
clean:
rm -rf $(APP_NAME) __pycache__
```
该makefile文件首先定义了一个 APP_NAME 变量,用于指定程序的名称。然后定义了三个动作:all、run 和 clean。
all 动作将执行以下操作:
1. 检查是否已安装 opencv-python-headless 包,如果没有则安装;
2. 将程序文件赋予可执行权限。
run 动作将运行程序。
clean 动作将清理生成的可执行文件和Python缓存文件。
使用方法:
1. 在终端中进入代码文件所在的文件夹。
2. 运行 make all,编译程序。
3. 运行 make run,启动程序。
4. 在摄像头窗口中按下p键,保存当前画面。
5. 在摄像头窗口中按下q键,退出程序。
6. 运行 make clean,清理生成的文件。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)