怎么在网站做浮动图标/公司优化是什么意思?

怎么在网站做浮动图标,公司优化是什么意思?,网站淘客怎么做,网站提示代码目录 抽烟检测的运用 1. 安全监控 (1) 公共场所禁烟监管 (2) 工业安全 2. 智能城市与执法 (1) 城市违章吸烟检测 (2) 无人值守管理 3. 健康管理与医疗 (1) 吸烟习惯分析 (2) 远程监护 4. AI 监控与商业分析 (1) 保险行业 (2) 商场营销 5. 技术实现 (1) 计算机视…

目录

抽烟检测的运用

1. 安全监控

(1) 公共场所禁烟监管

(2) 工业安全

2. 智能城市与执法

(1) 城市违章吸烟检测

(2) 无人值守管理

3. 健康管理与医疗

(1) 吸烟习惯分析

(2) 远程监护

4. AI 监控与商业分析

(1) 保险行业

(2) 商场营销

5. 技术实现

(1) 计算机视觉

(2) 传感器检测

(3) 结合物联网(IoT)

6. 挑战与优化

(1) 误报问题

(2) 夜间检测难度

(3) 隐私问题

代码实现思路

实现思路

1. 初始化检测模型

2. 读取视频流

3. 手部检测

4. 香烟检测

5. 嘴部检测

6. 抽烟行为判断

7. 可视化输出

8. 运行主循环

完整代码

效果展示



抽烟检测的运用

1. 安全监控

(1) 公共场所禁烟监管

  • 应用场景:机场、火车站、地铁站、医院、商场、学校等禁烟区域。
  • 作用:利用摄像头自动检测吸烟行为,触发警报或通知管理人员干预,减少人工巡逻成本。

(2) 工业安全

  • 应用场景:化工厂、加油站、煤矿、仓库等易燃易爆场所。
  • 作用:实时监测抽烟行为,防止安全事故,提高生产安全管理。

2. 智能城市与执法

(1) 城市违章吸烟检测

  • 应用场景:公交站、公共厕所、电梯、餐厅等区域。
  • 作用:结合智能监控系统,对违规吸烟行为进行抓拍、存证,甚至自动处罚。

(2) 无人值守管理

  • 应用场景:智能楼宇、写字楼、电影院等无人巡逻区域。
  • 作用:通过 AI 检测+语音提醒,劝阻违规吸烟者。

3. 健康管理与医疗

(1) 吸烟习惯分析

  • 应用场景:医院、戒烟中心、健康管理 APP。
  • 作用:记录个人抽烟次数、时间、环境等数据,帮助戒烟计划制定。

(2) 远程监护

  • 应用场景:养老院、精神病院等特殊场所。
  • 作用:监测老年人或患者是否有吸烟行为,防止健康风险。

4. AI 监控与商业分析

(1) 保险行业

  • 应用场景:人寿保险、健康保险公司。
  • 作用:检测投保人是否吸烟,调整保费或健康建议。

(2) 商场营销

  • 应用场景:便利店、烟草店。
  • 作用:分析吸烟人群的特征,优化营销策略。

5. 技术实现

(1) 计算机视觉

  • 算法:基于 YOLO、Faster R-CNN 等目标检测模型。
  • 数据:训练数据包含吸烟者的手部、嘴部、烟雾等特征。

(2) 传感器检测

  • 红外摄像头:检测烟头的温度特征。
  • 空气质量传感器:监测 PM2.5、尼古丁气味等。

(3) 结合物联网(IoT)

  • 智能监控摄像头:内置 AI 识别系统,边缘计算本地处理数据。
  • 云平台:接收数据并发出警报。

6. 挑战与优化

(1) 误报问题

  • 误将吸烟动作与喝水、拿笔等动作混淆。
  • 解决方案:使用时间序列分析、骨骼检测等方法提高准确率。

(2) 夜间检测难度

  • 夜间光照条件差,普通摄像头难以检测烟雾。
  • 解决方案:采用 红外摄像头 结合 AI 算法提高夜间识别率。

(3) 隐私问题

  • 监控摄像头涉及个人隐私,可能引发争议。
  • 解决方案:使用 边缘计算,仅上传检测结果,不存储人脸信息。



代码实现思路

实现思路

1. 初始化检测模型

  • MediaPipe Hands:用于检测 手部位置,得到手的边界框(bounding box)。
  • dlib 人脸关键点检测:用于检测 嘴部关键点,确定嘴巴的位置。
  • YOLOv3:用于检测 香烟,需要加载权重(yolov3.weights)、配置文件(yolov3.cfg)和类别标签(coco.names)。

2. 读取视频流

  • 通过 cv2.VideoCapture(0) 打开摄像头,逐帧读取视频。

3. 手部检测

  • MediaPipe Hands 处理帧图像,返回检测到的手部 关键点
  • 计算手部的 边界框x_min, y_min, x_max, y_max)。
  • 使用 cv2.rectangle() 画出手部边界框。

4. 香烟检测

  • 通过 YOLOv3 目标检测 识别图像中的物体(包括香烟)。
  • 过滤出 类别为 "cigarette" 的目标,并记录香烟的边界框信息(cigarette_bboxes)。
  • 使用 cv2.rectangle() 画出香烟的位置。

5. 嘴部检测

  • 通过 dlib 人脸检测器 定位人脸,并使用 68个面部关键点 识别嘴部(第48-67号点)。
  • 计算 嘴部中心位置
  • cv2.polylines() 画出嘴部区域。

6. 抽烟行为判断

  • 遍历每只 手的边界框
    1. 判断是否持有香烟(手与香烟的 IOU 交并比 是否超过阈值 0.3)。
    2. 计算手部到嘴部的距离
      • 获取手部中心 (hand_center_x, hand_center_y)
      • 计算与 最近的嘴部中心 的欧几里得距离 distance
    3. 综合判断抽烟行为
      • 手持香烟 且 距离嘴部<100像素,则判定 正在抽烟
      • 手部靠近嘴部<50像素,但未持有香烟,则 可能在抽烟(警告)。

7. 可视化输出

  • 如果检测到 正在抽烟
    • 在屏幕上显示 "WARNING: Active Smoking Detected!"(红色警告)。
  • 如果 疑似抽烟(手靠近嘴但未持烟):
    • 显示 "Potential Smoking!"(黄色提示)。
  • 画出所有检测到的 手部、香烟、嘴部

8. 运行主循环

  • 不断读取摄像头画面,并调用 detect_smoking(frame) 进行检测。
  • 按下 ESC 退出程序。



完整代码

import cv2
import numpy as np
import dlib
import mediapipe as mp# 初始化MediaPipe手部检测
mp_hands = mp.solutions.hands
hands = mp_hands.Hands(max_num_hands=2,min_detection_confidence=0.7,min_tracking_confidence=0.5
)# 初始化dlib人脸检测
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")# 加载YOLOv3模型(需包含自定义训练的香烟类别)
net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg")
layer_names = net.getLayerNames()
output_layers = [layer_names[i - 1] for i in net.getUnconnectedOutLayers().flatten()]with open("coco.names", "r") as f:classes = [line.strip() for line in f.readlines()]def is_holding_cigarette(hand_bbox, cigarette_bboxes, iou_threshold=0.3):"""判断手部是否持有香烟(基于IOU)"""for cig_bbox in cigarette_bboxes:# 计算IOUx1 = max(hand_bbox[0], cig_bbox[0])y1 = max(hand_bbox[1], cig_bbox[1])x2 = min(hand_bbox[2], cig_bbox[2])y2 = min(hand_bbox[3], cig_bbox[3])intersection = max(0, x2 - x1) * max(0, y2 - y1)area_hand = (hand_bbox[2] - hand_bbox[0]) * (hand_bbox[3] - hand_bbox[1])area_cig = (cig_bbox[2] - cig_bbox[0]) * (cig_bbox[3] - cig_bbox[1])iou = intersection / (area_hand + area_cig - intersection)if iou > iou_threshold:return Truereturn Falsedef detect_smoking(frame):# 转换为RGB格式(MediaPipe需要)rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)# 手部检测hand_bboxes = []results = hands.process(rgb_frame)if results.multi_hand_landmarks:for landmarks in results.multi_hand_landmarks:# 获取手部边界框x_coords = [lm.x * frame.shape[1] for lm in landmarks.landmark]y_coords = [lm.y * frame.shape[0] for lm in landmarks.landmark]x_min, x_max = min(x_coords), max(x_coords)y_min, y_max = min(y_coords), max(y_coords)hand_bboxes.append((x_min, y_min, x_max, y_max))cv2.rectangle(frame, (int(x_min), int(y_min)),(int(x_max), int(y_max)), (255, 0, 0), 2)# YOLOv3香烟检测cigarette_bboxes = []blob = cv2.dnn.blobFromImage(frame, 0.00392, (320, 320), swapRB=True)net.setInput(blob)outs = net.forward(output_layers)for out in outs:for detection in out:scores = detection[5:]class_id = np.argmax(scores)confidence = scores[class_id]if confidence > 0.5 and classes[class_id] == "cigarette":center_x = int(detection[0] * frame.shape[1])center_y = int(detection[1] * frame.shape[0])w = int(detection[2] * frame.shape[1])h = int(detection[3] * frame.shape[0])x = center_x - w // 2y = center_y - h // 2cigarette_bboxes.append((x, y, x + w, y + h))cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)# 人脸关键点检测mouth_positions = []faces = detector(frame)for face in faces:landmarks = predictor(frame, face)mouth_points = [(landmarks.part(i).x, landmarks.part(i).y)for i in range(48, 68)]mouth_center = np.mean(mouth_points, axis=0)mouth_positions.append(mouth_center)# 绘制嘴巴区域cv2.polylines(frame, [np.array(mouth_points, dtype=np.int32)],True, (0, 0, 255), 2)# 综合判断逻辑warning = Falsefor hand in hand_bboxes:# 判断是否持烟holding = is_holding_cigarette(hand, cigarette_bboxes)# 计算手部中心点hand_center = ((hand[0] + hand[2]) / 2, (hand[1] + hand[3]) / 2)# 找最近的人脸min_distance = float('inf')for mouth in mouth_positions:distance = np.sqrt((hand_center[0] - mouth[0]) ** 2 +(hand_center[1] - mouth[1]) ** 2)min_distance = min(min_distance, distance)# 判断条件if holding and min_distance < 100:  # 持烟且距离<100像素warning = Trueelif min_distance < 50:  # 未持烟但手部靠近嘴部cv2.putText(frame, "Potential Smoking!",(int(hand[0]), int(hand[1]) - 10),cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 255), 2)if warning:cv2.putText(frame, "WARNING: Active Smoking Detected!",(20, 50), cv2.FONT_HERSHEY_SIMPLEX,1, (0, 0, 255), 3, cv2.LINE_AA)return frame# 视频处理主循环
cap = cv2.VideoCapture(0)
while cap.isOpened():ret, frame = cap.read()if not ret:breakframe = cv2.flip(frame, 1)  # 镜像翻转result = detect_smoking(frame)cv2.imshow('Smoking Detection', result)if cv2.waitKey(1) == 27:breakcap.release()
cv2.destroyAllWindows()

效果展示

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

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

相关文章

WPF窗口读取、显示、修改、另存excel文件——CAD c#二次开发

效果如下&#xff1a; using System.Data; using System.IO; using System.Windows; using Microsoft.Win32; using ExcelDataReader; using System.Text; using ClosedXML.Excel;namespace IfoxDemo {public partial class SimpleWindow : Window{public SimpleWindow(){Initi…

HarmonyOS NEXT - 电商App实例三( 网络请求axios)

使用axios开发网络请求是一个非常常见的任务&#xff0c;尤其是Web前端开发者&#xff0c;对它非常熟悉。axios是一个基于Promise的HTTP客户端&#xff0c;支持浏览器和Node.js环境&#xff0c;使用简单且功能强大。 在harmonyOS中&#xff0c;如果想使用axios&#xff0c;可以…

Unity进阶课程【二】Mask 组件的使用 UI遮罩效果以及透明抠图效果

Unity组件讲解 Mask 时隔多年&#xff0c;今天咱们继续进阶课程&#xff0c;这几年变化很大&#xff0c;但是一直还是从事Unity行业&#xff0c;行业虽难&#xff0c;依旧坚持&#xff0c;以后会养成习惯&#xff0c;定期更新&#xff0c;希望小伙伴们监督&#xff0c;有想学习…

汽车无钥匙启动系统不使用传统机械钥匙启动汽车

汽车无钥匙启动系统 定义 汽车无钥匙启动系统&#xff08;Keyless Start System&#xff09;&#xff0c;启动车辆时不用掏拧钥匙&#xff0c;只需把钥匙放在包内或口袋里&#xff0c;按下车内按键或拧动导板即可使发动机点火。它无需插入钥匙&#xff0c;通过点按按键或旋转…

【Python】Python 3.11安装教程

一、Python 3.11安装包下载 1. Python 3.11下载与安装 Download Python | Python.org 下载完成包含以下文件&#xff1a; 二、python3.11安装步骤 1.右键以管理员身份运行安装程序。 2.勾选【Add Python…】然后点击【Customize…】。 3.页面点击【Next】。 4.勾选【Install …

如何处理PHP中的编码问题

如何处理PHP中的编码问题 在PHP开发过程中&#xff0c;编码问题是一个常见且棘手的问题。无论是处理用户输入、数据库交互&#xff0c;还是与外部API通信&#xff0c;编码问题都可能导致数据乱码、解析错误甚至安全漏洞。本文将深入探讨PHP中的编码问题&#xff0c;并提供一些…

【毕业论文格式】word分页符后的标题段前间距消失

文章目录 【问题描述】 分页符之后的段落开头&#xff0c;明明设置了标题有段前段后间距&#xff0c;但是没有显示间距&#xff1a; 【解决办法】 选中标题&#xff0c;选择边框 3. 选择段前间距&#xff0c;1~31磅的一个数 结果

论文调研 | 一些开源的AI代码生成模型调研及总结【更新于250313】

本文主要介绍主流代码生成模型&#xff0c;总结了基于代码生成的大语言模型&#xff0c;按照时间顺序排列。 在了解代码大语言模型之前&#xff0c;需要了解代码相关子任务 代码生成 文本生成代码(Text to code):根据自然语言描述生成代码 重构代码&#xff08;Refactoring …

3DS模拟器使用(pc+安卓)+金手指+存档互传

1、引言 3ds模拟器已经能够在手机端近乎完美模拟了&#xff0c;那么多的3ds游戏&#xff0c;比玩手机游戏舒服多了。 本人是精灵宝可梦的老玩家&#xff0c;从第一世代就一直在玩&#xff0c;刚耍完NDS的第五世代&#xff0c;黑白系列。现在到宝可梦XY了&#xff0c;需要在3d…

Java EE Web环境安装

Java EE Web环境安装 一、JDK安装与测试&#xff08;Windows环境&#xff09; 1. 安装JDK 官网下载&#xff1a;Oracle JDK&#xff08;选择Windows x64 Installer&#xff09;双击安装包&#xff0c;按向导完成安装 ​ 2. 环境变量配置 右键【此电脑】→【属性】→【高级…

探索CSS魔法:3D翻转与渐变光效的结合

随着前端技术的不断发展&#xff0c;CSS不再仅仅局限于样式设计&#xff0c;它也成为了实现富有互动性的动画和特效的强大工具。本篇文章将向大家展示如何利用CSS的3D变换和渐变光效&#xff0c;打造一张“神秘卡片”&#xff0c;通过简单的代码实现炫酷的视觉效果。 1. 初识神…

C++ STL 深度解析:vector 的全面指南与进阶技巧

一、底层架构深度剖析 1.1 内存管理机制 vector 通过三个指针实现动态内存管理&#xff1a; _start&#xff1a;指向分配内存的首元素&#xff08;begin()返回值&#xff09;_finish&#xff1a;指向最后一个元素的下一个位置&#xff08;end()返回值&#xff09;_end_of_st…

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

S7-1200 G2移植旧版本S7-1200程序的具体方法示例 前期概要: S7-1200 G2必须基于TIA博途V20,之前的程序可通过移植的方式在新硬件上使用。 该移植工具可自动将TIA Portal 项目从 S7-1200 移植到更新的S7-1200 G2。 注意: 该插件支持在同一TIA Portal项目实例内将软件和/或硬…

CNN SSP, ASPP, PPM 分割任务经典尺度聚合模块

SSP&#xff1a;Spatial Pyramid Pooling 让任意大小图像最终输出的特征维度始终固定&#xff0c;便于接全链接层。 4x4, 2x2,1x1区域的maxpooling&#xff0c;让任意大小图像最终输出最终特征维度始终为 &#xff08;1641)*256 ASSP:Atrous Spatial Pyramid Pooling 不进行…

OpenHarmony-XTS测试

OpenHarmony-XTS测试 OpenHarmony-XTS测试环境搭建测试准备开始运行PS OpenHarmony-XTS测试 针对OpenHarmony版本进行XTS测试使用记录。 windows环境。 以acts套件为例。 环境搭建 获取测试套件&#xff0c;两种方法 1&#xff09;官网下载&#xff1a;https://www.openharm…

文件系统 linux ─── 第19课

前面博客讲解的是内存级文件管理,接下来介绍磁盘级文件管理 文件系统分为两部分 内存级文件系统 : OS加载进程 ,进程打开文件, OS为文件创建struct file 和文件描述符表 ,将进程与打开的文件相连, struct file 内还函数有指针表, 屏蔽了底层操作的差异,struct file中还有内核级…

【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 传输介质网线光纤无线信道 通信方式和交换方式会考&#xff1a;交换方式 &#x1f4af;考试真题第一题第二题 IP地址表示子网划分&#x1f4af;考试真题第一题第二题 传输…

G2o顶点与边编程总结

G2o的顶点与边属于 HyperGraph 抽象类的继承OptimizableGraph 的继承。 BaseVertex<D,T> D是预测点的维度&#xff08;在流形空间的最小表示&#xff09;T是待估计vertex的数据类型&#xff0c;比如用四元数表达三维旋转的话&#xff0c;T就是Quaternion 类型 // 顶点的…

凸优化算法学习笔记:决策单调性与 wqs二分

文章目录 前言决策单调性单调矩阵&#xff0c;完全单调矩阵&#xff0c;蒙日阵决策单调性优化 d p dp dp线性 d p dp dp分治&#xff08;离线&#xff09;二分队列&#xff08;在线&#xff09;SMAWK 区间 d p dp dp 练习题LOJ6039 w q s wqs wqs 二分&#xff08;蒙日阵最短…

Aop实现简单基于日志记录

目录 一、基础知识&#xff1a; 二、测试记录接口的参数和结果 一、基础知识&#xff1a; Before&#xff1a;用于执行目标方法之前的逻辑。After&#xff1a;用于执行目标方法之后的逻辑。AfterReturning&#xff1a;用于获取目标方法返回值后的逻辑。AfterThrowing&#x…