Python 实时显示摄像头,点击按钮保存当前摄像头图片

效果图:

Python 实时显示摄像头,点击按钮保存当前摄像头图片_第1张图片

import cv2
import tkinter as tk
from PIL import Image, ImageTk
from datetime import datetime
import os

# 声明一个列表来存储所有的图片名称
image_names = []

# 打开摄像头
cap = cv2.VideoCapture(0)

# 创建Tkinter窗口
window = tk.Tk()
window.title("摄像头")
window.geometry("900x600")  # 设置窗口的宽度和高度为800x600像素

# 创建显示视频的标签
label = tk.Label(window)
label.place(x=10, y=10, width=640, height=480)  # 设置标签的位置和大小

# 创建保存图片名称的标签
label_filename = tk.Label(window)
label_filename.place(x=660, y=10, width=240, height=480)  # 设置标签的位置和大小

# 显示图片
def show_frame():
    global frame  # 将frame声明为全局变量
    # 读取摄像头画面
    ret, frame = cap.read()

    # 获取当前时间
    current_time = datetime.now()

    # 将时间转换为字符串
    time_str = current_time.strftime("%Y%m%d %H:%M:%S")

    # 在帧上添加时间文本
    cv2.putText(frame, time_str, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2)

    # 将OpenCV图像转换为Tkinter图像
    frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)  # 将颜色通道顺序转换为RGB
    image = Image.fromarray(frame_rgb)
    image = ImageTk.PhotoImage(image)

    # 更新标签中的图像
    label.configure(image=image)
    label.image = image

    # 每隔10毫秒调用一次show_frame函数
    label.after(10, show_frame)

# 保存图片
def save_pic():
    global image_names
    # 获取当前时间
    current_time = datetime.now()

    # 构建图片名称
    image_name = current_time.strftime("%Y%m%d_%H%M%S_%f") + ".jpg"

    # 显示文字
    image_name_dis = "保存成功: " + image_name

    # 构建保存路径
    save_folder = "D:\\01project\\save"
    os.makedirs(save_folder, exist_ok=True)
    save_path = os.path.join(save_folder, image_name)

    # 保存当前帧为图片
    success = cv2.imwrite(save_path, frame)

    # 将新的图片名称添加到列表中
    image_names.append(image_name_dis)

    # 将所有的图片名称拼接起来,并设置为label_filename标签的文本内容,每个图片名称之间添加换行符
    label_filename.config(text="\n".join(image_names))


# 创建保存按钮
button_save = tk.Button(window, text="保存图片", command=save_pic)
button_save.place(x=660, y=530, width=120, height=40)  # 设置按钮的位置和大小

# 开始显示视频
show_frame()

# 运行Tkinter事件循环
window.mainloop()

持续更新中... ...                    点个关注和收藏哦

Labview、Python、VBA、C、Excel公式、PCB Layout、PIC单片机、Visual Studio(ASP.NET)、SQL Server ,欢迎沟通讨论
部分文档为做项目过程中的源代码,可能没有注释,有疑问欢迎私信沟通

#电子爱好者       #电子专业       #熟悉开关电源原理和测试       #从事硬件自动测试开发

你可能感兴趣的:(python,计算机视觉,开发语言)