人脸识别系统---年龄预测

一、预测年龄

1.加载预训练的人脸检测模型

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

2.加载预训练的性别和年龄识别模型

gender_net = cv2.dnn.readNetFromCaffe('deploy_gender.prototxt', 'gender_net.caffemodel')
age_net = cv2.dnn.readNetFromCaffe('deploy_age.prototxt', 'age_net.caffemodel')

3.定义性别和年龄的标签列表

gender_list = ['Male', 'Female']
age_list = ['(0-2)', '(4-6)', '(8-12)', '(15-20)', '(25-32)', '(38-43)', '(48-53)', '(60-100)']

4.定义选择图片的函数

def select_image():file_path = filedialog.askopenfilename()if file_path:img = cv2.imread(file_path)if img is not None:display_image(file_path)

5.创建一个按钮,用于打开文件选择对话框

image = Image.open("A.gif")  # 加载一张图片
photo2 = ImageTk.PhotoImage(image)
open_image_btn = tk.Button(root, image=photo2, command=select_image)
open_image_btn.place(x=30,y=30)

6.定义显示图片的函数

def display_image(file_path):

6.1确保 img 变量已经定义

global img
img = cv2.imread(file_path)
if img is not None:

6.2调整图像大小到相等的大小

 img = cv2.resize(img, (300, 300))  # 假设您想要将图像调整到 227x227 的大小

6.3将 OpenCV 图像转换为 PIL 图像

 pil_image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

6.4在这里调整图像到固定大小

pil_image = pil_image.resize((300, 400))  # 调整图像到300x400像素

6.5将 PIL 图像转换为 tkinter 支持的格式

image_tk = ImageTk.PhotoImage(pil_image)

6.6在 root 窗口中创建一个标签来显示图像

 label = tk.Label(root, image=image_tk)label.image = image_tk  # 保持引用,否则图像在重新绘制时会丢失label.place(x=30, y=100)# label.pack()

7.创建预测年龄的函数

def predict_age():

7.1确保 img 变量已经定义

global img
if img is not None:

7.2转换为灰度图像

   gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

7.3检测人脸

  faces = face_cascade.detectMultiScale(gray, 1.1, 4)

7.4遍历检测到的人脸

 for (x, y, w, h) in faces:

7.5从原始图像中裁剪人脸区域

face_img = img[y:y + h, x:x + w].copy()

7.6预处理人脸图像以适应神经网络输入

  blob = cv2.dnn.blobFromImage(face_img, 1, (227, 227), (78.4263377603, 87.7689143744, 114.895847746), swapRB=False)

7.7预测年龄

 age_net.setInput(blob)age_preds = age_net.forward()age = age_list[age_preds[0].argmax()]

7.8在人脸周围画框并显示年龄

   cv2.rectangle(img, (x, y), (x + w, y + h), (255, 255, 0), 2)cv2.putText(img, f'{age}', (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2, cv2.LINE_AA)

7.9将 OpenCV 图像转换为 PIL 图像

  pil_image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

7.10在这里调整图像到固定大小

  pil_image = pil_image.resize((300, 400))  # 调整图像到300x400像素

7.11将 PIL 图像转换为 tkinter 支持的格式

  image_tk = ImageTk.PhotoImage(pil_image)

7.12在 root 窗口中创建一个标签来显示图像

  label = tk.Label(root, image=image_tk)label.image = image_tk  # 保持引用,否则图像在重新绘制时会丢失label.place(x=360, y=100)

7.13将 OpenCV 图像转换为 PIL 图像

  pil_image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

7.14在这里调整图像到固定大小

pil_image = pil_image.resize((300, 400))  # 调整图像到300x400像素

7.15将 PIL 图像转换为 tkinter 支持的格式

 image_tk = ImageTk.PhotoImage(pil_image)

运行结果:

在这里插入图片描述
下一个博客 我会将年龄于性别预测相结合,大家敬请期待!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解并解决 Flutter 中的灰屏问题

生产中的 flutter 应用程序中的灰屏是一种通用占位符,当框架遇到问题无法渲染预期用户界面时就会显示。是的,所以基本上是出现问题时的后备指示器。 有趣的是,这只出现在发布模式下。在任何其他模式下运行都会显示红色错误屏幕,并…

Oracle 数据库表和视图 的操作

1. 命令方式操作数据库&#xff08;采用SQL*Plus&#xff09; 1.1 创建表 1.1.1 基本语法格式 CREATE TABLE[<用户方案名>]<表名> (<列名1> <数据类型> [DEFAULT <默认值>] [<列约束>]<列名2> <数据类型> [DEFAULT <默认…

【Python 基本变量教程及案列】

Python 基本变量教学 在Python中&#xff0c;变量是一种用来存储数据的标识符。变量可以存储各种数据类型&#xff0c;包括整数、浮点数、字符串、布尔值、列表、元组、字典等。以下是Python基本变量的详细介绍及案例示范。 1. 变量声明与赋值 在Python中&#xff0c;声明变…

Trying to access array offset on value of type null

主要原因是版本7.4以后PHP解析器会对null类型的下标访问直接报错 背景&#xff1a; laravel框架 同时使用了扩展A和扩展B 扩展A要求 php>7.4,同时扩展B的对null类型的下标访问不兼容php7.4 修改扩展B不太现实&#xff0c;毕竟扩展B中有太多的对null类型的下标访问。 解决…

忘记word文档加密密码要如何破解word文档密码呢?

如今工作中已离不开各类办公软件&#xff0c;办公软件中Word几乎是天天被用到&#xff0c;为了保护数据&#xff0c;用户会为Word文档设置密码&#xff0c;但时间久了不记得密码了就非常麻烦。Word文档加密忘记密码怎样能打开&#xff1f;下面来看详细介绍吧&#xff01; 一、使…

志愿服务管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;广场论坛管理&#xff0c;志愿活动管理&#xff0c;活动报名管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;志愿活动&a…

YOLOv10项目-服务器上运行

1、前言 2、运行YOLOv10代码流程&#xff08;超详细&#xff09; &#xff08;3&#xff09;根据下面步骤安装&#xff1a; &#xff08;4&#xff09;数据集和其他配置 &#xff08;5&#xff09;测试训练&#xff08;很详细&#xff09; 1、前言 由于一些事情&#xff0…

PLSQL、Oracle以及客户端远程连接服务器笔记(仅供参考)

1.PLSQL参考链接&#xff1a; 全网最全最细的PLSQL下载、安装、配置、使用指南、问题解答&#xff0c;相关问题已汇总-CSDN博客文章浏览阅读2.9w次&#xff0c;点赞98次&#xff0c;收藏447次。双击之后&#xff0c;这里选择安装目录&#xff0c;你安装目录选的哪里&#xff0…

React 事件函数传播及捕获

事件传播 事件处理函数将捕获任何来自子组件的事件。事件会沿着树向上“冒泡”或“传播”&#xff1a;它从事件发生的地方开始&#xff0c;然后沿着树向上传播。 在 React 中所有事件都会传播&#xff0c;除了 onScroll&#xff0c;它仅适用于你附加到的 JSX 标签。 <div cl…

C++240617

2、升级优化自己应用程序的登录界面。 要求&#xff1a; 1. qss实现 2. 需要有图层的叠加 &#xff08;QFrame&#xff09; 3. 设置纯净窗口后&#xff0c;有关闭等窗口功能。 4. 如果账号密码正确&#xff0c;则实现…

mysql如何创建并执行事件?

在 MySQL 中,事件调度器允许您在指定的时间间隔执行 SQL 语句。这类似于操作系统中的计划任务(如 cron 作业)。 前提条件 确保您的 MySQL 服务器已启用事件调度器。可以通过以下命令检查并启用: SHOW VARIABLES LIKE event_scheduler;如果返回的值是 OFF,可以通过以下命…

【算法实战】每日一题:18.3 ST表 - 给定一个整数序列和一系列区间查询,求每个查询区间内所有整数的最大公约数。

题目 给定一个整数序列和一系列区间查询&#xff0c;求每个查询区间内所有整数的最大公约数。 思路 上一节我们详细的学完ST表后&#xff0c;这里就比较好算了&#xff0c;直接把ST表的板子换一下增加一个GCD即可 解决方案 import mathdef gcd(a, b):if b 0:return aretu…

编译期间生成代码(Lombok原理)

通过在编译期间&#xff0c;修改Java的AST(Abstract Syntax Tree)树&#xff0c;可以往类中&#xff0c;添加/修改&#xff08;覆盖&#xff09;方法、属性等。 现在比较常见的三方依赖例子有&#xff1a;Lobbok的Data可以生成get、set方法&#xff0c;Sl4j2可以生成静态常量l…

Java图形用户界面设计的布局管理器

LayoutManager布局管理器 前言一、布局管理器的背景简介 二、FlowLayout构造方法参数说明代码演示AWTSwing 三、BorderLayout布局管理器注意点构造方法代码演示AWT示例一示例二 Swing 四、GridLayout简介构造方法代码示例AWTSwing 五、GridBagLayoutGridBagConstraints APIGrid…

Redis 数据持久化策略和数据过期策略

01- 你们项目中哪里用到了Redis ? 在我们的项目中很多地方都用到了Redis , Redis在我们的项目中主要有三个作用 : 使用Redis做热点数据缓存/接口数据缓存 使用Redis存储一些业务数据 , 例如 : 验证码 , 用户信息 , 用户行为数据 , 数据计算结果 , 排行榜数据等 使用Redis实…

Java项目常用包的分层和作用

一个好的Java项目要有好的分层&#xff0c;不仅简洁明了&#xff0c;而且降低代码的耦合度&#xff0c;方便维护和升级。 web层 在Java Web应用程序中&#xff0c;Web层通常指的是处理HTTP请求和响应的层次&#xff0c;它直接与客户端&#xff08;通常是Web浏览器&#xff09…

【一】【QT开发应用】QT开发环境配置,安装QT应用

下载QT软件 点击网址链接&#xff0c;QT下载网址 下载vsaddin插件 点击网址链接&#xff0c;QT下载网址 根据自己的vs版本下载对应的文件. 安装QT 用命令行打开安装程序 找到直接路径, D:\Software\QT\qt-unified-windows-x86-4.3.0-1-online.exe 利用WindowsPowe…

Gauss200使用分享

登录、授权控制 解锁账户 su - omm gsql -d db_rdb -p 8000 -ralter user ado_user account unlock; alter user sig_qry_rpt account unlock;参数控制 && 优化参考 只读模式解锁 su - omm gs_guc reload -Z coordinator -Z datanode -N all -I all -c "defau…

Python自动化测试面试题精选(一)

今天大家介绍一些Python自动化测试中常见的面试题&#xff0c;涵盖了Python基础、测试框架、测试工具、测试方法等方面的内容&#xff0c;希望能够帮助你提升自己的水平和信心。 项目相关 什么项目适合做自动化测试&#xff1f; 答&#xff1a;一般来说&#xff0c;适合做自…

文档项目:攻坚克难

鉴于交流离心机存在的缺点&#xff1a;转速相对偏差、稳定精度不够高&#xff1b;带负载能力受外界扰动后&#xff0c;波动较大&#xff1b;寿命短&#xff0c;研究所各相关部门成立组成技术攻关团队&#xff0c;齐心协力&#xff0c;攻坚克难&#xff0c;在摸索中突破创新&…