import time
import tkinter as tk # gui用
import tkinter.messagebox # 弹出来的对话框
import torch
import torchvision.models as models
import torchvision.transforms as transforms
import tkinter.filedialog # 文件相关窗口
from torch import nn
from threading import Thread # 进程
import numpy as np
from PIL import Image, ImageTk
from mss import mss
class MainWindow(tk.Tk):
def __init__(self):
super().__init__()
self.default_path = [] # 默认模型位置,型配置位置和文件保存位置
self.title("年龄识别系统") # 给主窗口起一个名字
self.geometry("900x700+200+100") # 大小
self.config(menu=self.Generate_Menu()) # 生成菜单栏,窗口与菜单关联
self.now_num = -1 # 当前选择的功能
# 图片========================================================
self.image_ui = {}
self.image_ui["图片框架"] = tk.LabelFrame(self, text="图片") # 图片显示
self.image_ui["滚动条x"] = tk.Scrollbar(self.image_ui["图片框架"], orient=tk.HORIZONTAL) # 滚动条x
self.image_ui["滚动条y"] = tk.Scrollbar(self.image_ui["图片框架"], orient=tk.VERTICAL) # 滚动条y
self.image_ui["画布"] = tk.Canvas(self.image_ui["图片框架"],
xscrollcommand=self.image_ui["滚动条x"].set,
yscrollcommand=self.image_ui["滚动条y"].set)
self.image_ui["图片路径"] = ""
self.image_ui["当前图片"] = Image.new('RGB', (0, 0))
self.image_ui["显示的图片"] = ImageTk.PhotoImage(self.image_ui["当前图片"])
self.image_ui["图片索引"] = self.image_ui["画布"].create_image(0, 0, anchor="nw",
image=self.image_ui["显示的图片"]) # 先不放图片
self.image_ui["画布"].configure(scrollregion=(0, 0, 0, 0)) # 更新Canvas的滚动区域
self.image_ui["画布"].update() # 更新canvas以显示新图片
self.image_ui["滚动条x"].pack(side=tk.BOTTOM, fill=tk.X) # 靠下,拉满x
self.image_ui["滚动条x"].config(command=self.image_ui["画布"].xview)
self.image_ui["滚动条y"].pack(side=tk.RIGHT, fill=tk.Y) # 靠右,拉满y
self.image_ui["滚动条y"].config(command=self.image_ui["画布"].yview)
self.image_ui["画布"].pack(fill=tk.BOTH, expand=True) # 中间,且不扩充父框架大小
self.image_ui["图片框架"].grid(row=0, column=0, sticky="wesn")
self.image_ui["画布"].bind('<Button-1>', self.Image_Click) # 绑定鼠标左键点击事件
self.image_ui["画布"].bind('<B1-Motion>', self.Image_Loosen) # 绑定鼠标左键点击移动事件
self.image_ui["画布"].bind('<ButtonRelease-1>', self.Image_Movex) # 绑定鼠标左键点击释放事件
self.image_ui["操作框架"] = tk.LabelFrame(self, text="操作") # 操作
self.image_ui["选择图片按钮"] = tk.Button(self.image_ui["操作框架"], text="选择图片", command=self.Select_Image)
self.image_ui["图片大小标签"] = tk.Label(self.image_ui["操作框架"], text="图片大小")
self.image_ui["图片大小滑条"] = tk.Scale(self.image_ui["操作框架"], from_=0.01, to=1, resolution=0.05,
orient='horizontal', )
self.image_ui["图片大小滑条"].bind('<ButtonRelease-1>', self.Scale_Image) # 松开才执行
def Image_Change_Scale(c_num):
self.image_ui["图片大小滑条"].set(self.image_ui["图片大小滑条"].get() + c_num)
self.Scale_Image()
self.image_ui["图片大小+"] = tk.Button(self.image_ui["操作框架"], text="+",
command=lambda c_num=0.05: Image_Change_Scale(c_num))
self.image_ui["图片大小-"] = tk.Button(self.image_ui["操作框架"], text="-",
command=lambda c_num=-0.05: Image_Change_Scale(c_num))
self.image_ui["显示的框选范围"] = [0, 0, 0]
self.image_ui["真实的框选范围"] = [0, 0, 0]
self.image_ui["框选大小标签"] = tk.Label(self.image_ui["操作框架"], text="框选大小")
self.image_ui["框选大小滑条"] = tk.Scale(self.image_ui["操作框架"], from_=0, to=0, resolution=1,
orient='horizontal', ) # 最大图片
def Image_Change_Selection_Box(event):
if self.image_ui["框选大小滑条"].get() == self.image_ui["真实的框选范围"][2]:
return
else:
self.image_ui["真实的框选范围"][2] = self.image_ui["框选大小滑条"].get()
self.Show_Selection_Box()
self.Update_Display()
def Image_Change_Box_small(c_num=None, direction=None):
if not c_num == None:
self.image_ui["框选大小滑条"].set(self.image_ui["框选大小滑条"].get() + c_num)
Image_Change_Selection_Box(None)
elif not direction == None: # 8246,上下左右
num = self.image_ui["微调大小滑条"].get()
if direction == 8:
self.image_ui["真实的框选范围"][1] -= num
if direction == 2:
self.image_ui["真实的框选范围"][1] += num
if direction == 4:
self.image_ui["真实的框选范围"][0] -= num
if direction == 6:
self.image_ui["真实的框选范围"][0] += num
self.Show_Selection_Box()
self.Update_Display()
self.image_ui["微调大小滑条"] = tk.Scale(self.image_ui["操作框架"], from_=1, to=100, resolution=1,
orient='horizontal', )
self.image_ui["框选大小滑条"].bind('<ButtonRelease-1>', Image_Change_Selection_Box) # 松开才执行
self.image_ui["框选大小+"] = tk.Button(self.image_ui["操作框架"], text="+",
command=lambda c_num=1: Image_Change_Box_small(c_num=c_num))
self.image_ui["框选大小-"] = tk.Button(self.image_ui["操作框架"], text="-",
command=lambda c_num=-1: Image_Change_Box_small(c_num=c_num))
self.image_ui["微调上"] = tk.Button(self.image_ui["操作框架"], text="^",
command=lambda: Image_Change_Box_small(direction=8))
self.image_ui["微调下"] = tk.Button(self.image_ui["操作框架"], text="v",
command=lambda: Image_Change_Box_small(direction=2))
self.image_ui["微调左"] = tk.Button(self.image_ui["操作框架"], text="<",
command=lambda: Image_Change_Box_small(direction=4))
self.image_ui["微调右"] = tk.Button(self.image_ui["操作框架"], text=">",
command=lambda: Image_Change_Box_small(direction=6))
self.image_ui["示例图片框架"] = tk.LabelFrame(self.image_ui["操作框架"], text="输出示例")
self.image_ui["示例图片画布"] = tk.Canvas(self.image_ui["示例图片框架"], width=224, height=224)
self.image_ui["示例图片"] = Image.new('RGB', (224, 224))
self.image_ui["显示的示例图片"] = ImageTk.PhotoImage(self.image_ui["当前图片"])
self.image_ui["示例图片索引"] = self.image_ui["示例图片画布"].create_image(0, 0, anchor="nw",
image=self.image_ui["显示的示例图片"])
self.image_ui["输出结果关联变量"] = tk.StringVar()
没有合适的资源?快使用搜索试试~ 我知道了~
一个基于预训练的DenseNet121模型的人脸年龄分类系统.zip
共2001个文件
png:1976个
pth:21个
py:3个
需积分: 0 2 下载量 113 浏览量
2024-05-27
14:16:42
上传
评论 1
收藏 883.79MB ZIP 举报
温馨提示
一个基于预训练的DenseNet121模型的人脸年龄分类系统,包含训练用数据集,源代码,训练好的模型。
资源推荐
资源详情
资源评论
收起资源包目录
一个基于预训练的DenseNet121模型的人脸年龄分类系统.zip (2001个子文件)
.DS_Store 14KB
5490.png 75KB
5200.png 68KB
727.png 66KB
4057.png 66KB
1424.png 65KB
3760.png 65KB
1097.png 64KB
809.png 64KB
3535.png 63KB
2478.png 62KB
6805.png 62KB
3596.png 62KB
847.png 62KB
847.png 62KB
7183.png 62KB
3437.png 62KB
2614.png 61KB
6081.png 61KB
5071.png 61KB
709.png 61KB
1151.png 61KB
3078.png 60KB
251.png 60KB
2529.png 60KB
6179.png 60KB
2165.png 60KB
981.png 60KB
1724.png 60KB
2676.png 60KB
6487.png 60KB
4636.png 60KB
4968.png 59KB
4825.png 59KB
4825.png 59KB
2394.png 59KB
5337.png 59KB
5294.png 58KB
988.png 58KB
2884.png 58KB
730.png 58KB
1282.png 58KB
454.png 58KB
74.png 58KB
2867.png 58KB
3328.png 58KB
7140.png 58KB
7174.png 58KB
5117.png 58KB
871.png 58KB
4671.png 58KB
5527.png 57KB
4638.png 57KB
4638.png 57KB
2715.png 57KB
1607.png 57KB
1747.png 57KB
6427.png 57KB
5502.png 57KB
4540.png 57KB
1931.png 57KB
4357.png 57KB
6949.png 57KB
310.png 57KB
2748.png 57KB
1630.png 56KB
1630.png 56KB
5988.png 56KB
4864.png 56KB
1027.png 56KB
5069.png 56KB
2842.png 56KB
705.png 56KB
7108.png 56KB
533.png 56KB
7100.png 56KB
4012.png 56KB
2311.png 56KB
3052.png 56KB
840.png 55KB
5482.png 55KB
5987.png 55KB
5987.png 55KB
6650.png 55KB
1782.png 55KB
4069.png 55KB
506.png 55KB
3216.png 55KB
1403.png 55KB
3228.png 55KB
1152.png 55KB
4660.png 55KB
5521.png 55KB
1721.png 55KB
1268.png 55KB
1268.png 55KB
3033.png 55KB
3192.png 55KB
834.png 55KB
3627.png 55KB
共 2001 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21
资源评论
i道i
- 粉丝: 727
- 资源: 41
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功