功能
python
1.按照指定的文件名创建文件夹,创建之前判断该文件夹是否存在
2.调用摄像头按可调整窗口大小的方式显示
3.按esc退出摄像头画面
4.按p保存当前摄像头的画面,并按当前时间为照片的名字进行保存
打开终端查看是否有摄像头
python
ls /dev/video*
一般video1就是usb摄像头
代码
python
import cv2
import datetime
创建文件夹函数
python
# 创建文件夹函数
import os
def create_directory(directory_name):
# 获取当前路径
path = os.getcwd()
# 拼接完整的路径
full_path = os.path.join(path, directory_name)
# 检查文件夹是否存在
if not os.path.exists(full_path):
print(f"文件夹 '{directory_name}' 不存在,现在创建。")
os.makedirs(full_path)
else:
print(f"文件夹 '{directory_name}' 已经存在。")
return full_path
显示摄像头画面并按p拍照函数
python
def view_video(video_path):
# 设置显示窗口的大小
width,height = 800,600
video = cv2.VideoCapture(video_path)
if video.isOpened():
'''把摄像头设置为1980 x 1080'''
video.set(cv2.CAP_PROP_FRAME_WIDTH,1920)
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
video.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter.fourcc('M','J','P','G'))
'''
video.read() 一帧一帧地读取
open 得到的是一个布尔值,就是 True 或者 False
frame 得到当前这一帧的图像
'''
open, frame = video.read()
else:
open = False
while open:
ret, frame = video.read()
# 如果读到的帧数不为空,那么就继续读取,如果为空,就退出
if frame is None:
break
if ret == True:
# cv2.resizeWindow('video',width,height)
cv2.namedWindow('video',cv2.WINDOW_NORMAL)
cv2.imshow("video", frame)
# 按下p键,进行拍照
if cv2.waitKey(50) & 0xFF == ord('p'):
print('按下p键,进行拍照')
current_time = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
# 保存当前帧为图片
file_name = f"{current_time}.jpg"
# 调用函数,创建名字为'photo'的文件夹
path = create_directory('photo')
photo_path = os.path.join(path, file_name)
cv2.imwrite(photo_path, frame)
print(f"当前帧已保存为 '{file_name}'")
# 这里等于 27 也即是说按下 ESC 键即可退出该窗口
# 这里使用 waitKey 可以控制视频的播放速度,数值越小,播放速度越快
if cv2.waitKey(50) & 0xFF == 27:
break
video.release()
cv2.destroyAllWindows()
python
# usb摄像头的id为1
view_video(1)