当前位置:首页>python>用Python开发摄像抓拍保存小工具

用Python开发摄像抓拍保存小工具

  • 2026-08-26 12:56:23
用Python开发摄像抓拍保存小工具

在保存照片时,自动给文件名加上时间戳,这样可以避免文件名重复,也能清晰记录拍摄时间,这个需求非常实用

实现思路

  1. 使用 Python 内置的 datetime 模块生成格式化的时间戳
  2. 修改 save_photo() 方法,在弹出保存对话框时,将时间戳作为默认文件名
  3. 时间戳格式建议使用 年-月-日_时-分-秒,既易读又不会包含系统不支持的特殊字符

修改后的完整代码(关键部分)

只需修改原代码中的 save_photo 方法,并添加 datetime 导入即可:

import tkinter as tkfrom tkinter import ttk, filedialog, messageboximport cv2import threadingimport timefrom PIL import Image, ImageTkimport os# 新增:导入datetime模块from datetime import datetimeclassCameraApp:# 其他代码保持不变...defsave_photo(self):"""保存捕获的照片(添加时间戳)"""ifnot hasattr(self, 'captured_photo'):            messagebox.showwarning("警告", "没有可保存的照片!")return# 生成时间戳,格式:年-月-日_时-分-秒        timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")# 设置默认文件名,包含时间戳        default_filename = f"摄像头照片_{timestamp}"# 弹出保存对话框,设置默认文件名        file_path = filedialog.asksaveasfilename(            defaultextension=".jpg",            initialfile=default_filename,  # 新增:设置默认文件名            filetypes=[("JPEG图片", "*.jpg"), ("PNG图片", "*.png"), ("所有文件", "*.*")],            title="保存照片"        )if file_path:# 转换颜色空间并保存            img = cv2.cvtColor(self.captured_photo, cv2.COLOR_RGB2BGR)            cv2.imwrite(file_path, img)            self.status_var.set(f"照片已保存至: {file_path}")            messagebox.showinfo("成功", f"照片已保存到:\n{file_path}")            self.save_btn.config(state=tk.DISABLED)# 其他代码保持不变...if __name__ == "__main__":    root = tk.Tk()    app = CameraApp(root)    root.mainloop()

关键修改点解释

  1. 导入模块:在代码开头添加 from datetime import datetime,用于生成时间戳。
  2. 生成时间戳:
    • %Y:4位年份(如 2026)
    • %m:2位月份(如 02)
    • %d:2位日期(如 27)
    • %H:24小时制的小时(如 15)
    • %M:分钟(如 30)
    • %S:秒(如 45)
    • datetime.now() 获取当前系统时间
    • strftime("%Y-%m-%d_%H-%M-%S") 将时间格式化为字符串,各部分含义:
    • 最终生成的时间戳示例:2026-02-27_15-30-45
  3. 设置默认文件名:在 asksaveasfilename 中添加 initialfile=default_filename,这样保存对话框会自动填充包含时间戳的文件名,用户可直接保存或修改。

扩展:自定义时间戳格式

如果你想调整时间戳格式,可以修改 strftime 的参数,例如:

  • 只保留年月日:%Y%m%d → 20260227
  • 12小时制(带上午/下午):%Y-%m-%d_%I-%M-%S_%p → 2026-02-27_03-30-45_PM
  • 简化格式:%Y%m%d_%H%M%S → 20260227_153045

总结

  1. 核心修改是导入 datetime 模块,生成格式化时间戳,并设置为保存对话框的默认文件名。
  2. 时间戳格式采用 年-月-日_时-分-秒,既符合命名规范,又能清晰区分不同照片。
  3. 修改后的代码保留了原有的所有功能,仅增强了文件名的自动命名逻辑,用户仍可手动修改文件名。

你只需将原代码中的 save_photo 方法替换为上述版本,并添加 datetime 导入,即可实现带时间戳的照片保存功能。

最新文章

随机文章