当前位置: 首页 > article >正文

好玩又实用:C#上位机 + YOLO 实现宠物行为识别系统

好玩又实用C#上位机 YOLO 实现宠物行为识别系统作为一名资深铲屎官我曾一度被这些问题困扰出门上班时猫咪是在乖乖睡觉还是在疯狂拆家狗狗是不是又在啃咬家具想知道宠物的日常行为却只能靠下班回家后查看监控录像不仅耗时还抓不到关键瞬间。直到我用C# WinForm 上位机 YOLO搭建了一套宠物行为识别系统彻底解决了这个问题系统能实时识别宠物的核心行为吃饭、喝水、睡觉、玩耍、追尾巴、抓沙发、啃家具、叫唤、对镜子发呆……一旦检测到“违规行为”抓沙发、啃拖鞋、翻垃圾桶等立刻语音播报“XX又在搞破坏啦”手机推送企业微信/钉钉/飞书 附带截图自动录制10秒短视频存档统计当天行为时长分布生成“宠物日报”热力图既满足了铲屎官的好奇心与控制欲又能及时制止破坏行为堪称“云养宠 智能管教”二合一神器。这套系统成本极低普通USB摄像头 旧电脑/迷你主机即可还能完全自定义行为类别和预警规则。今天就把完整开发思路、数据集制作、核心代码、趣味玩法全部分享出来让你也能为自家毛孩子打造专属AI监护系统。一、宠物行为识别场景的真实痛点与方案选型铲屎官最关心的几件事排序不分先后实时知道宠物在干嘛尤其是上班摸鱼时发现破坏行为能第一时间干预语音推送事后有证据截图短视频能统计行为规律今天睡了多久、拆家几次系统要稳定、好部署、不卡、不贵为什么选 YOLO 而不是其他方案方案实时性自定义行为容易度部署难度家用PC成本趣味性最终推荐度传统OpenCV规则中极差低低低★☆☆☆☆商用智能宠物摄像头高几乎不可自定义无需开发高中★★☆☆☆Python YOLO Flask高高中环境依赖多低高★★★★☆C# YOLO ONNX高高低单exe发布极低高★★★★★结论家用场景下C# WinForm YOLO ONNX Runtime是目前性价比最高、最好玩、最容易长期维护的组合。二、技术选型2026家用最稳组合组件推荐选型理由与工业/家用适配性目标检测模型YOLOv11 nano / YOLOv8 nano速度快、精度够、ONNX导出最成熟推理引擎ONNX Runtime (.NET)CPU也能30FPS单文件部署无依赖界面框架WinForm (.NET 8/9)拖拽开发快老电脑也能跑摄像头采集AForge.NET 或 DirectShow延迟低支持大多数USB摄像头语音播报NAudio gTTS / Edge TTS本地TTS或调用微软在线语音手机推送企业微信/钉钉/飞书Webhook免费、稳定、支持Markdown图片数据统计与可视化SQLite ScottPlot / LiveCharts2轻量级行为日报、热力图三、核心功能实现代码示例可直接复制1. YOLO实时检测主循环带行为防抖 事件触发privateYoloPredictorpredictor;privateintconsecutiveEat0,consecutiveSleep0,consecutiveDestroy0;privateconstintCONFIRM_FRAMES5;// 连续5帧确认行为privatevoidvideo_NewFrame(objectsender,NewFrameEventArgseventArgs){usingvarbmp(Bitmap)eventArgs.Frame.Clone();usingvarskBmpSKBitmap.FromImage(SKImage.FromBitmap(bmp));varresultspredictor.Detect(skBmp);stringcurrentBehavior未知;floatmaxConf0;foreach(varrinresults){if(r.Confidence0.65)continue;stringlabelr.Label.Name.ToLower();if(r.ConfidencemaxConf){maxConfr.Confidence;currentBehaviorlabel;}// 绘制不同颜色框varcolorlabel.Contains(destroy)||label.Contains(chew)?SKColors.Red:label.Contains(eat)?SKColors.Orange:label.Contains(sleep)?SKColors.Blue:SKColors.Green;varpaintnewSKPaint{StyleSKPaintStyle.Stroke,Colorcolor,StrokeWidth4};varrectr.BoundingBox;newSKCanvas(skBmp).DrawRect(rect.X,rect.Y,rect.Width,rect.Height,paint);}// 行为确认 触发if(currentBehavior.Contains(eat))consecutiveEat;elseif(currentBehavior.Contains(sleep))consecutiveSleep;elseif(currentBehavior.Contains(destroy)||currentBehavior.Contains(chew))consecutiveDestroy;// 重置其他计数if(!currentBehavior.Contains(eat))consecutiveEat0;if(!currentBehavior.Contains(sleep))consecutiveSleep0;if(!currentBehavior.Contains(destroy)!currentBehavior.Contains(chew))consecutiveDestroy0;if(consecutiveDestroyCONFIRM_FRAMES){TriggerDestroyAlert(currentBehavior);consecutiveDestroy0;// 防止重复报警}// UI更新this.Invoke((){picPreview.Image?.Dispose();picPreview.ImageskBmp.ToBitmap();lblBehavior.Text$当前行为{currentBehavior}({maxConf:P1});});}2. 破坏行为报警语音 推送 录像privateasyncvoidTriggerDestroyAlert(stringbehavior){// 1. 语音播报本地TTS示例awaitSpeakAsync($警告{behavior}行为检测到{petName}又在搞破坏啦);// 2. 截图 10秒录像可使用AForge VideoFileWriterstringtimestampDateTime.Now.ToString(yyyyMMdd_HHmmss);stringimgPathSaveCurrentFrame(timestamp);// 3. 企业微信/钉钉推送awaitSendWebhookAsync(title:宠物破坏警报,content:$检测到 **{behavior}** 行为\n时间{DateTime.Now}\n已自动录像,imagePath:imgPath);}privateasyncTaskSpeakAsync(stringtext){// 使用 Edge TTS 或 Windows Speech SynthesisusingvarsynthnewSpeechSynthesizer();synth.SelectVoiceByHints(VoiceGender.Female,VoiceAge.NotSet,0,newCultureInfo(zh-CN));synth.SpeakAsync(text);}3. 行为日报SQLite 简单热力图// 每分钟记录一次行为时长可放TimerprivatevoidLogBehavior(stringbehavior){usingvarconnnewSQLiteConnection(Data Sourcepet_behavior.db);conn.Open();usingvarcmdconn.CreateCommand();cmd.CommandText INSERT INTO BehaviorLog (Timestamp, Behavior, DurationSeconds) VALUES (ts, beh, 60);cmd.Parameters.AddWithValue(ts,DateTime.UtcNow);cmd.Parameters.AddWithValue(beh,behavior);cmd.ExecuteNonQuery();}// 生成日报ScottPlot示例privatevoidGenerateDailyReport(){varpltnewScottPlot.Plot(800,600);// 从SQLite读取当天数据按小时聚合// ... 查询代码略 ...// plt.AddBar(...) 绘制热力图或饼图plt.SaveFig(daily_report.png);}四、趣味玩法拓展让系统更好玩行为排行榜每周统计“最皮时刻Top5”情绪打分结合叫声检测额外模型判断“开心/生气/无聊”自动逗猫/逗狗检测到“无聊/睡觉太久” → 播放逗猫棒声音或打开激光笔AI旁白用大模型生成每日宠物小剧场解说“今天小橘又成功把沙发挠出新艺术”云同步行为数据 短视频上传到阿里云/腾讯云随时手机查看五、快速上手步骤训练/下载YOLOv11n宠物行为模型或用开源宠物数据集微调新建WinForm项目 → 安装YoloSharp / YoloV8.Net AForge NAudio复制上面核心代码 → 修改行为类别与阈值F5运行 → 对准自家宠物 → 见证AI铲屎时刻成本USB摄像头100-300元 旧电脑/NUC ≈ 0元增量效果上班也能“云养宠”回家少生气有任何问题模型训练、推送配置、语音包、想加激光笔联动、行为数据集推荐直接评论或私信我24小时内回复。欢迎分享你家宠物的搞破坏视频我帮你定制专属行为标签下一篇文章预告《C# YOLO ESP32-CAM低成本AI宠物喂食器与行为联动》点赞收藏这可能是你今年为毛孩子打造的最好玩AI系统教程

相关文章:

好玩又实用:C#上位机 + YOLO 实现宠物行为识别系统

好玩又实用:C#上位机 YOLO 实现宠物行为识别系统 作为一名资深铲屎官,我曾一度被这些问题困扰: 出门上班时,猫咪是在乖乖睡觉还是在疯狂拆家?狗狗是不是又在啃咬家具?想知道宠物的日常行为,却只…...

玩转Docker | 使用Docker部署PDF工具箱BentoPDF

玩转Docker | 使用Docker部署PDF工具箱BentoPDF 前言 一、BentoPDF项目介绍 BentoPDF简介 BentoPDF主要特点 二、系统要求 环境要求 环境检查 Docker版本检查 检查操作系统版本 三、部署BentoPDF服务 下载BentoPDFr镜像 创建BentoPDF容器 检查容器状态 检查BentoPDF服务端口 安…...

C程序中隐藏的数据溢出陷阱

C程序中隐藏的数据溢出陷阱 通常的规则: 当代码中对char、short等更短的类型进行算术运算时,编译器会自动将它们提升为int再进行计算。假设16位、32位无符号数类型,分别定义为UINT16、UNIT32一.计算过程溢出对16bit机器,如以下程序…...

第八届信息科学、电气与自动化工程国际学术会议(ISEAE 2026)

第八届信息科学、电气与自动化工程国际学术会议(ISEAE 2026) 2026 8th International Conference on Information Science, Electrical and Automation Engineering 时间地点:2026年4月17-19日 黑龙江省大庆市 会议官网:http:/…...

使用RISC-V IDE MRS2进行代码开发

MounRiver Studio Ⅱ(MRS2)使用了VSCode同款框架,继承VSCode代码编辑功能的基础上,还增加了一系列嵌入式开发辅助功能。【主题切换】MRS2内置多种深浅色界面配色主题,可通过工具栏快捷配置按钮来进行切换:【代码补全】在代码开发过…...

T32状态下寄存器组织、AArch32/64重要寄存器(ARM处理器架构模型——寄存器组织,中篇)

本文声明:内容来源于网络,进行整合/再创作;部分内容由AI辅助生成。T32状态下的寄存器组织Thumb状态寄存器是ARM状态的子集。注意,在Thumb状态下发生异常时,处理器自动进入ARM状态。A32与T32状态下的寄存器组织在Thumb状…...

问题整理清单

问题整理清单 请问模版匹配这个HHandle 这个句柄 序列化之前和序列化之后不一样呢 ?“HALCON error #2404: Invalid handle type in operator do_ocr_multi_class_cnnpython训练出来的结果预测之后的结果很对,但是一到C#上面就不行了什么是LinuxCNC...

【Dv3Admin】FastCRUD MD编辑器操作

富文本字段和 Markdown 字段在后台表单里的问题,本质上很像,真正麻烦的都不是“能不能挂进去”,而是挂进去以后尺寸、回显、校验和展示边界是否稳定。放到 md-editor-v3 之后,最常见的问题通常集中在编辑区高度不合适、宽度被表单…...

【C++】左值引用、右值引用

目录 一、右值引用的意义 二、基础:理解左值与右值 1. 左值(Lvalue,Locator Value) 常见的左值场景: 2. 右值(Rvalue,Read Value) 2.1 纯右值(prvalue)…...

Tower I3C Host Adapter 使用范例 (20)

Easyi3C是一家领先的嵌入式系统工具供应商,可简化各种通信协议的开发和调试。公司提供一系列产品,旨在帮助工程师和开发人员更高效地使用 I3C、I2C等协议。 基于Tower I3C Host Adapter 测试DDR5 RCD (4) 一 DDR5 RCD I3C背景介绍 在高性能计算和服务器…...

Qt进程间通信

QSharedMemory 共享内存(Shared Memory)是一种进程间通信(Inter-Process Communication, IPC)机制,允许多个进程共享同一块内存区域。共享内存提供了高效的数据交换方式,适用于需要频繁传递大量数据的场景。…...

Hive数仓分区设计与更新操作指南

目录 一、Hive 分区概述 1.1 分区的核心作用 1.2 分区的本质示例 二、分区设计原则 2.1 分区字段选择原则 2.2 分区粒度与数量控制 2.3 分区设计常见误区 三、分区表的创建 3.1 静态分区表 3.1.1 创建静态分区表 3.1.2 向静态分区表插入数据 3.2 动态分区表 3.2.1 …...

2026年最新免费5S管理系统盘点!盘点10个免费的5S系统!

在2026年制造业数字化转型的关键节点,寻找一套高效且低成本的5S管理系统已成为众多中小企业的迫切需求。面对市场上繁杂的软件选择,如何精准定位到真正的免费5S系统?本文为您带来2026年最新免费5S管理系统盘点,深度剖析当前市场格…...

一、STM32入门

用的是正点原子STM32F103MINI、JLINK v8 1.准备工作 1.1手册 1.1.1数据手册 STM32F103RCT6 开发板各个元件的特性。 1.1.2参考手册 在逻辑层面上,如何利用STM32F10X开发板各个部位的特性实现各种功能。 1.1.3厂家的学习开发手册 具体厂家设计的代码层面的如何学…...

《UNIX高级环境编程》第十三章 守护进程(一文读懂UNIX下守护进程)

一、守护进程的特征守护进程是一种生命周期较长的进程,常常在系统启动时被运行,在系统关闭时终止,并且没有关联的终端设备,是一个后台进程。一个系统中,父进程ID为0的一般是内核进程。进程1通常是init进程,…...

杰理AC695N/AC696N歌词回调

想要连接蓝牙播放音乐显示歌词杰理的SDK已经做好封装了, 等待我们去调用就可以了, ac695n和ac696n的sdk调用方法都一样下面开始还有一点最重要的是下面这个宏必须要打开, 最后连接蓝牙播放音乐就能在日志打印中看到歌词的回调了还有一个做法是可以把A2DP的这个宏关掉, 然后就可…...

配置中心的作用?Nacos 配置中心原理?

一句话回答:配置中心的作用,就是把分散在各个服务里的配置统一集中管理,并支持动态推送和环境隔离,避免每次改配置都去改代码、重启服务。 Nacos 官方也把自己定位成“动态配置服务”,强调配置的中心化、外部化和动态化…...

NPM Script 实战:常用命令设计与封装|Vue 工程化篇

【NPM Script】Vue 前端工程化实操:从核心封装逻辑到落地,彻底搞懂 npm run 常用命令最佳写法,避开端口占用、环境变量、多环境构建高频坑! 📑 文章目录 开篇一、NPM Script 是什么?为什么用它&#xff1f…...

KMP算法之 next 数组的计算

/*** brief 计算模式串的next数组(部分匹配表),并可视化计算过程* param pattern 模式串(待查找的基因片段)* param next 输出参数:存储next数组(长度需≥模式串长度)*/ void kmp_ge…...

发电机组并网技术研究

一、概述在现代电力供应体系中,柴发机组作为应急电源或后备电源,是应对市电中断、用电高峰负荷及特殊场景电力需求,保障电力持续、稳定供应的关键核心设备,其典型应用系统如下图1所示(图1:柴发机组典型供电…...

负载均衡策略有哪些?如何自定义?

你先记一句总纲:负载均衡策略,就是当一个服务有多个实例时,客户端或网关该按什么规则选一个实例去调用。常见负载均衡策略1. 轮询 Round Robin按顺序一个一个分配请求:第1个请求给实例A第2个请求给实例B第3个请求给实例C优点是简单…...

深度解构 BeyondMimic 引导扩散控制策略

深度解构 BeyondMimic 引导扩散控制策略 引导扩散就是先利用 Tracking 的方式训练出多个可以实现各种动作的小模型,随后利用这些小模型在仿真中生成大量的数据,用来训练出一个大模型,也就是蒸馏。但这里用的不是传统的蒸馏手段,我…...

全球爆火的龙虾杀入科研智能体赛道,字节跳动、微软以及英伟达等巨头也早已布局AI4Science领域

小罗碎碎念 如果说2020年至2023年是以AlphaFold为代表的模型在静态数据映射和结构预测上取得历史性突破的阶段,那么2025至2026年则标志着科学智能正式迈入“智能体(Agentic AI)”时代 。 在这一全新阶段,人工智能不再仅仅是被动…...

leetcode 1394. Find Lucky Integer in an Array 找出数组中的幸运数-耗时100

Problem: 1394. Find Lucky Integer in an Array 找出数组中的幸运数 耗时100%&#xff0c;固定数组统计频次&#xff0c;从高到低判断频次和数值是否相等 Code class Solution { public:int findLucky(vector<int>& arr) {vector<int> freq(501, 0);for(int&…...

leetcode 困难题 1392. Longest Happy Prefix 最长快乐前缀

Problem: 1392. Longest Happy Prefix 最长快乐前缀 滚动哈希的&#xff0c;取基26&#xff0c;模1e9 11&#xff0c;首先求出字符串的前缀哈希&#xff0c;前缀哈希用到了滚动哈希计算方式 后缀哈希&#xff0c;可以直接套公式求 像cbcb&#xff0c;前缀哈希这么算&#xf…...

AI新范式 02|拆解世界模型:它是如何理解物理规律的?

当AI学会了“重力加速度”&#xff0c;它就真正开始理解这个世界引言&#xff1a;从“知其然”到“知其所以然” 在第一篇中&#xff0c;我们谈到2026年是“世界模型元年”&#xff0c;NVIDIA Cosmos、Google DeepMind Genie等代表性工作正在重塑AI对物理世界的理解。但一个核心…...

告别绘图软件!Paperxie AI 科研绘图:10 次免费额度,让理工科论文可视化一步到位

paperxie科研绘图https://www.paperxie.cn/drawinghttps://www.paperxie.cn/drawing 在科研写作与论文发表的路上&#xff0c;「科研绘图」永远是那道绕不开的坎&#xff1a;Matplotlib 代码写了几百行还是跑不出理想图表&#xff0c;Origin 复杂的操作界面让新手望而却步&…...

环境变量与虚拟地址空间

环境变量与虚拟地址空间环境变量&#xff08;1&#xff09;问题引入&#xff08;2&#xff09;引入环境变量&#xff08;3&#xff09;环境变量和c代码关系1.用代码获取环境变量2.作用(4)添加环境变量&#xff08;5&#xff09;删除环境变量&#xff08;6&#xff09;set环境变…...

从零开始了解数据采集——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...

2026 本科生论文工具盘点:9 款 AI 工具搞定初稿 / 绘图 / 排版 / AI 率

一、写在前面&#xff1a;论文季的「工具焦虑」&#xff0c;你需要一份精准选型指南 又到毕业季&#xff0c;朋友圈里满是「论文写到凌晨三点」「格式改到崩溃」「AI 率超标被导师打回」的吐槽。写毕业论文从来不是「敲字」那么简单&#xff1a;从选题定方向、初稿生成&#x…...