网站建设公司的成本有哪些方面网站建设与管理试卷_
2026/1/3 23:00:20 网站建设 项目流程
网站建设公司的成本有哪些方面,网站建设与管理试卷_,seo网站推广优化费用,深圳市律师网站建设怎么样我来帮你开发这个家庭宠物行为监测工具。这是一个结合智能视觉技术的综合项目#xff0c;我会提供模块化代码、文档和知识点总结。代码实现项目结构pet_monitor/├── config.py # 配置文件├── capture.py # 图像采集模块├── detector.py # 行为识别模块 ├── analy…我来帮你开发这个家庭宠物行为监测工具。这是一个结合智能视觉技术的综合项目我会提供模块化代码、文档和知识点总结。代码实现项目结构pet_monitor/├── config.py # 配置文件├── capture.py # 图像采集模块├── detector.py # 行为识别模块├── analyzer.py # 行为分析模块├── reporter.py # 报告生成模块├── notifier.py # 推送模块├── main.py # 主程序└── requirements.txt # 依赖文件核心代码# config.py - 配置文件import osclass Config:# 摄像头配置CAMERA_ID 0FRAME_WIDTH 640FRAME_HEIGHT 480# YOLO模型配置MODEL_PATH yolov8n.ptCONF_THRESHOLD 0.5# 行为识别类别 (COCO数据集)PET_CLASSES [cat, dog]FOOD_BOWL_CLASS bowlWATER_BOWL_CLASS cup # 用水杯代表水盆ACTIVITY_ZONE_CLASS chair # 用椅子代表活动区域# 行为判定阈值EATING_DURATION 3 # 进食持续3秒以上DRINKING_DURATION 2 # 饮水持续2秒以上# 报告配置REPORT_INTERVAL 3600 # 1小时生成一次报告STATS_WINDOW 86400 # 24小时统计数据# 邮件推送配置SMTP_SERVER smtp.qq.comSMTP_PORT 587SENDER_EMAIL your_emailqq.comSENDER_PASSWORD your_auth_codeRECEIVER_EMAIL receiverqq.com# capture.py - 图像采集模块import cv2from config import Configclass CameraCapture:def __init__(self):self.cap Nonedef start_capture(self):启动摄像头采集try:self.cap cv2.VideoCapture(Config.CAMERA_ID)self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, Config.FRAME_WIDTH)self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, Config.FRAME_HEIGHT)if not self.cap.isOpened():raise Exception(无法打开摄像头)return Trueexcept Exception as e:print(f摄像头启动失败: {e})return Falsedef get_frame(self):获取一帧图像if self.cap and self.cap.isOpened():ret, frame self.cap.read()return frame if ret else Nonereturn Nonedef stop_capture(self):停止采集if self.cap:self.cap.release()# detector.py - 行为识别模块from ultralytics import YOLOimport cv2from config import Configclass BehaviorDetector:def __init__(self):self.model YOLO(Config.MODEL_PATH)self.class_names self.model.namesdef detect_objects(self, frame):检测图像中的物体try:results self.model(frame, confConfig.CONF_THRESHOLD)detections []for result in results:boxes result.boxesif boxes is not None:for box in boxes:x1, y1, x2, y2 box.xyxy[0].cpu().numpy()conf box.conf[0].cpu().numpy()cls int(box.cls[0].cpu().numpy())class_name self.class_names[cls]detections.append({bbox: [int(x1), int(y1), int(x2), int(y2)],confidence: float(conf),class: class_name,class_id: cls})return detectionsexcept Exception as e:print(f目标检测失败: {e})return []# analyzer.py - 行为分析模块import timefrom collections import defaultdictclass BehaviorAnalyzer:def __init__(self):self.pet_status {} # 宠物状态跟踪self.behavior_log [] # 行为日志self.last_cleanup time.time()def analyze_behaviors(self, detections, timestamp):分析宠物行为behaviors []pet_boxes [d for d in detections if d[class] in [cat, dog]]food_boxes [d for d in detections if d[class] bowl]water_boxes [d for d in detections if d[class] cup]activity_boxes [d for d in detections if d[class] chair]# 分析每只宠物的行为for pet in pet_boxes:pet_id f{pet[class]}_{timestamp}behavior self._check_pet_behavior(pet, food_boxes, water_boxes, activity_boxes, timestamp)if behavior:behaviors.append(behavior)self.behavior_log.append({timestamp: timestamp,pet_type: pet[class],behavior: behavior[type],duration: behavior.get(duration, 0)})return behaviorsdef _check_pet_behavior(self, pet, food_boxes, water_boxes, activity_boxes, timestamp):检查单个宠物的具体行为px1, py1, px2, py2 pet[bbox]pet_center ((px1 px2) // 2, (py1 py2) // 2)# 检查进食行为for bowl in food_boxes:bx1, by1, bx2, by2 bowl[bbox]bowl_center ((bx1 bx2) // 2, (by1 by2) // 2)if self._is_near(pet_center, bowl_center, threshold80):key feating_{pet[class]}current_time time.time()if key not in self.pet_status:self.pet_status[key] {start_time: current_time, count: 0}elif current_time - self.pet_status[key][start_time] Config.EATING_DURATION:self.pet_status[key][count] 1self.pet_status[key][start_time] current_timereturn {type: eating, pet: pet[class], duration: Config.EATING_DURATION}# 检查饮水行为类似进食逻辑for cup in water_boxes:cx1, cy1, cx2, cy2 cup[bbox]cup_center ((cx1 cx2) // 2, (cy1 cy2) // 2)if self._is_near(pet_center, cup_center, threshold60):key fdrinking_{pet[class]}current_time time.time()if key not in self.pet_status:self.pet_status[key] {start_time: current_time, count: 0}elif current_time - self.pet_status[key][start_time] Config.DRINKING_DURATION:self.pet_status[key][count] 1self.pet_status[key][start_time] current_timereturn {type: drinking, pet: pet[class], duration: Config.DRINKING_DURATION}# 检查活动行为for chair in activity_boxes:chx1, chy1, chx2, chy2 chair[bbox]if px1 chx1 and px2 chx2 and py1 chy1 and py2 chy2:return {type: activity, pet: pet[class], location: activity_zone}return Nonedef _is_near(self, point1, point2, threshold50):判断两点距离是否小于阈值import mathdistance math.sqrt((point1[0]-point2[0])**2 (point1[1]-point2[1])**2)return distance thresholddef get_statistics(self, window_seconds86400):获取统计信息from datetime import datetime, timedeltacutoff_time time.time() - window_secondsrecent_logs [log for log in self.behavior_log if log[timestamp] cutoff_time]stats defaultdict(lambda: defaultdict(int))for log in recent_logs:pet_type log[pet_type]behavior log[behavior][type]stats[pet_type][behavior] 1return dict(stats)# reporter.py - 报告生成模块import pandas as pdfrom datetime import datetimefrom config import Configclass ReportGenerator:def generate_daily_report(self, stats):生成日报report_lines []report_lines.append( 家庭宠物行为监测日报 )report_lines.append(f报告时间: {datetime.now().strftime(%Y-%m-%d %H:%M:%S)})report_lines.append()for pet_type, behaviors in stats.items():report_lines.append(f【{pet_type.upper()}】)total_events sum(behaviors.values())report_lines.append(f总行为次数: {total_events})for behavior, count in behaviors.items():percentage (count / total_events * 100) if total_events 0 else 0report_lines.append(f- {behavior}: {count}次 ({percentage:.1f}%))report_lines.append()return \n.join(report_lines)def save_report_csv(self, stats, filenamepet_behavior_report.csv):保存CSV格式报告data []for pet_type, behaviors in stats.items():for behavior, count in behaviors.items():data.append({pet_type: pet_type, behavior: behavior, count: count})df pd.DataFrame(data)df.to_csv(filename, indexFalse, encodingutf-8-sig)return filename# notifier.py - 推送模块import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom config import Configclass EmailNotifier:def send_report(self, report_content, subject宠物行为监测报告):发送邮件报告try:msg MIMEMultipart()msg[From] Config.SENDER_EMAILmsg[To] Config.RECEIVER_EMAILmsg[Subject] subjectbody MIMEText(report_content, plain, utf-8)msg.attach(body)server smtplib.SMTP(Config.SMTP_SERVER, Config.SMTP_PORT)server.starttls()server.login(Config.SENDER_EMAIL, Config.SENDER_PASSWORD)server.sendmail(Config.SENDER_EMAIL, Config.RECEIVER_EMAIL, msg.as_string())server.quit()return Trueexcept Exception as e:print(f邮件发送失败: {e})return False# main.py - 主程序import timefrom capture import CameraCapturefrom detector import BehaviorDetectorfrom analyzer import BehaviorAnalyzerfrom reporter import ReportGeneratorfrom notifier import EmailNotifierfrom config import Configdef main():# 初始化模块camera CameraCapture()detector BehaviorDetector()analyzer BehaviorAnalyzer()reporter ReportGenerator()notifier EmailNotifier()# 启动摄像头if not camera.start_capture():print(无法启动摄像头程序退出)returnprint(宠物行为监测系统启动成功)last_report_time time.time()try:while True:# 获取帧frame camera.get_frame()if frame is None:continue# 目标检测detections detector.detect_objects(frame)# 行为分析current_time time.time()behaviors analyzer.analyze_behaviors(detections, current_time)# 定期生成报告if current_time - last_report_time Config.REPORT_INTERVAL:stats analyzer.get_statistics(Config.STATS_WINDOW)report reporter.generate_daily_report(stats)reporter.save_report_csv(stats)# 发送邮件if notifier.send_report(report):print(f报告已发送: {time.strftime(%Y-%m-%d %H:%M:%S)})else:print(报告发送失败)last_report_time current_time# 显示实时信息可选if behaviors:print(f检测到行为: {[b[type] for b in behaviors]})time.sleep(0.1) # 控制循环频率except KeyboardInterrupt:print(程序被用户中断)finally:camera.stop_capture()print(程序已退出)if __name__ __main__:main()# requirements.txtopencv-python4.5.0ultralytics8.0.0pandas1.3.0README文件家庭宠物行为监测工具这是一个基于智能视觉技术的家庭宠物行为监测系统能够自动识别宠物的进食、饮水和活动情况并生成健康报告推送给主人。项目特色- 智能识别使用YOLOv8深度学习模型识别宠物行为- 实时监控24小时不间断监测宠物活动状态- 健康报告自动生成日报统计行为频率和时长- 远程推送通过邮件发送分析报告到手机安装部署1. 克隆项目并安装依赖pip install -r requirements.txt2. 下载YOLOv8模型文件到项目目录3. 配置config.py文件- 设置摄像头ID和分辨率- 配置邮箱SMTP信息- 调整行为识别阈值使用方法python main.py系统将自动启动摄像头开始监测宠物行为。每小时生成一次报告并发送到指定邮箱。模块说明- capture.py摄像头图像采集- detector.pyYOLO目标检测识别- analyzer.py行为分析和状态跟踪- reporter.py健康报告生成- notifier.py邮件推送服务注意事项- 确保摄像头正常工作且有足够光线- 首次使用需要训练宠物适应摄像头环境- 邮箱需开启SMTP服务并获取授权码使用说明系统启动后将自动执行以下流程图像采集→目标检测→行为分析→数据统计→报告生成→邮件推送。关键配置参数说明EATING_DURATION控制进食判定时长CONF_THRESHOLD调整检测精度REPORT_INTERVAL设置报告频率。建议根据实际环境微调阈值以获得最佳效果。如需扩展功能可在analyzer.py中添加新行为类型或在reporter.py中自定义报告格式。系统支持多种宠物类型识别可通过修改PET_CLASSES配置添加新宠物品种。核心知识点卡片智能视觉技术应用- 目标检测YOLOv8模型实时识别宠物、食盆、水盆等物体- 行为识别基于空间位置关系判断进食、饮水、活动状态- 图像预处理摄像头采集与分辨率优化配置模块化程序设计- 单一职责每个模块专注特定功能便于维护扩展- 接口清晰标准化数据传递格式降低耦合度- 异常处理全面捕获硬件故障、网络异常等边界情况行为数据分析算法- 状态跟踪记录宠物行为持续时间与频次- 统计分析计算行为占比、趋势变化等健康指标- 时间窗口支持自定义统计周期日/周/月健康报告生成机制- 数据聚合整合多维度行为数据形成综合评估- 可视化表达结构化文本展示关键健康指标- 自动化推送定时邮件发送减少人工干预系统集成技术- 多线程协调并行处理图像采集与分析任务- 配置驱动外部参数文件管理环境差异- 跨平台兼容支持Windows/Linux/macOS部署运行关注我有更多实用程序等着你

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询