安全监控系统

简介: 【9月更文挑战第15天】

儿童安全监控系统

在一家儿童游乐场,需要确保没有成年人在没有监护的情况下进入儿童区域。请开发一个程序,使用DNN进行人脸识别和年龄估计,当检测到年龄小于10岁的儿童且没有成年人在场时,系统将模拟报警。

项目描述:
编写一个Python程序,使用OpenCV的DNN模块加载预训练的人脸识别、年龄和性别识别模型。程序将从视频流中捕获图像,识别人脸,并估计每个人的年龄和性别。如果检测到只有儿童(年龄小于10岁)而没有成年人(年龄大于或等于18岁),则程序将打印一条报警消息。

Python编码示例:

import cv2
import numpy as np

# 加载预训练的模型
face_net = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'res10_300x300_ssd_iter_140000_fp16.caffemodel')
age_net = cv2.dnn.readNetFromCaffe('age_deploy.prototxt', 'age_net.caffemodel')
gender_net = cv2.dnn.readNetFromCaffe('gender_deploy.prototxt', 'gender_net.caffemodel')

# 打开视频流
cap = cv2.VideoCapture('path_to_video_or_camera')

while True:
    ret, frame = cap.read()
    if not ret:
        break

    # 人脸检测
    face_blob = cv2.dnn.blobFromImage(frame, 1.0, (300, 300), (104, 177, 123))
    face_net.setInput(face_blob)
    faces = face_net.forward()

    # 检查每个检测到的人脸
    for i in range(faces.shape[2]):
        confidence = faces[0, 0, i, 2]
        if confidence > 0.5:
            box = faces[0, 0, i, 3:7] * np.array([frame.shape[1], frame.shape[0], frame.shape[1], frame.shape[0]])
            startX, startY, endX, endY = box.astype("int")
            face = frame[startY:endY, startX:endX]

            # 年龄和性别检测
            age_blob = cv2.dnn.blobFromImage(face, 1.0, (227, 227), (78, 87, 114), swapRB=False)
            age_net.setInput(age_blob)
            age_preds = age_net.forward()
            age = np.argmax(age_preds[0])

            # 检查年龄是否小于10岁且没有成年人在场
            if age < 2 and all(a >= 2 for a in ages):  # 假设年龄标签为0-6, 7-12, ..., 61-67
                print("Alert: Unaccompanied child detected!")

    # 显示结果
    cv2.imshow('Frame', frame)

    key = cv2.waitKey(1) & 0xFF
    if key == 27:  # 按Esc键退出
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()
目录
相关文章
|
10月前
|
搜索推荐 JavaScript 前端开发
博客添加Aplayer音乐播放器
本文介绍了如何在博客网站中添加一个美观且功能强大的音乐播放器APlayer.js,从基本设置到高级定制,包括单曲播放、播放列表以及第三方歌单的集成方法。通过简单的HTML和JavaScript代码,即可实现个性化的音乐播放体验,让访客在浏览文章的同时享受美妙的音乐。
506 12
博客添加Aplayer音乐播放器
|
12月前
|
人工智能 数据可视化 前端开发
简化开发流程 低代码技术优势全解析
低代码开发通过可视化界面、预建模板和拖放操作简化开发流程,加速企业数字化转型。Zoho Creator等平台提供丰富模板、自动化工作流和第三方集成,降低开发成本,提高效率,成为未来应用开发趋势。
180 1
|
12月前
|
安全 Unix Linux
Linux系统之使用cmatrix实现数字雨效果
【10月更文挑战第16天】Linux系统之使用cmatrix实现数字雨效果
247 2
Linux系统之使用cmatrix实现数字雨效果
|
Unix Shell Linux
常见的shell命令
shell常用命令
270 11
|
设计模式 Java 数据库连接
|
12月前
|
程序员 C语言 开发者
内存分配
【10月更文挑战第9天】
203 8
|
缓存 负载均衡 应用服务中间件
Nginx 代理管理器强势登场!轻松设置反向代理,为你的网络安全与高效护航,快来探索!
【8月更文挑战第23天】Nginx 代理管理器(NPM)是一款强大的工具,用于简化反向代理的设置流程。反向代理能隐藏后端服务器的真实IP,提升安全性,实现负载均衡与缓存等功能。用户需先安装Nginx 代理管理器,然后通过其Web界面添加代理主机,指定代理名称、协议类型、服务器地址及端口等信息。对于HTTPS协议,还需上传SSL证书/密钥。完成设置后,可通过浏览器测试反向代理是否正常工作。Nginx 代理管理器还支持高级特性,如负载均衡、缓存及访问控制等。
342 1
|
消息中间件 存储 运维
Kafka重要配置参数全面解读(重要)
Kafka重要配置参数全面解读(重要)
697 2
|
缓存 关系型数据库 MySQL
为什么MySQL分页查询偏移量越大查询越慢
【5月更文挑战第1天】为什么MySQL分页查询偏移量越大查询越慢
559 4
|
人工智能 API UED
🔍语言无界,沟通无阻:AI翻译技术,让职场国际交流零障碍!
【8月更文挑战第1天】全球化驱动跨国合作,但语言障碍影响交流效率。AI翻译技术突破此限制,实现实时多语种翻译,如会议中即时将发言转为所需语言,确保无障碍沟通。此外,AI能根据上下文精准翻译,避免误解。通过持续学习,AI翻译质量不断提升。这项技术打破语言壁垒,促进文化融合,未来将进一步优化职场国际交流,推动全球化进程。
291 0