AiPy 监控视频智能监察:人像一键抽取+可反复执行程序落地

兄弟们,不知道你们有没有过查监控的经历,虽然现在监控摄像头是越来越多,硬盘越塞越满,但真出了事儿,回放查录像堪比大海捞针!纯人工一帧帧的去找,能把眼睛盯瞎还是人影都找不到。不过我最近搞了个骚操作:用AiPy搓了个脚本,让监控视频自己监察,有人经过自动截图存档,并打上时间戳,关键是简单、免费、可复用,换个视频文件也能跑!


一、为什么要做这个脚本

前段时间下班跑得太急,直接把打卡这事抛到了九霄云外。等想起来时,已经是三天后的事,只模糊记得个大概时间(下班果然应该按时就走!)。眼瞅着工时结算逼近,没办法,只能硬着头皮去翻监控提交补卡申诉。屏幕前的我,神经紧绷地盯了半小时显示屏,好在赶在截止时间前完成了申诉。

之后我就萌生了做个智能监控脚本的想法。人工查监控方式,不仅效率低,还容易遗漏关键信息,要是能让机器自动帮我们“盯梢”,岂不是美滋滋?于是,我决定试试用 AiPy,看看能不能解决这个难题。

二、说干就干

2.1、准备工作

第一步当然是更新 AiPy 啦!这玩意儿更新速度简直离谱,之前我在本地装的版本,只能在黑乎乎的命令行里用,操作起来特别费劲。现在好了,直接去官网(https://www.aipyaipy.com/)就能下载带图形界面的新版,方便多了!

2.2、提示词准备

用大语言模型(LLM)搭配 Python 真的超方便!咱们只要把需求捋清楚告诉 AiPy 就行,比如:把某个文件夹里的所有监控视频都翻一遍,找到有人出现的画面截个图,再把这些截图存到另一个指定文件夹里。

搞明白这个需求后,就写出提示词如下:

当前目录有一个daka文件夹,需要你帮忙写一个脚本名称为daka(1).py,可以识别daka文件夹内部的视频,每当有人经过的时候就能截图保存到dakajietu文件夹中,识别过程要避免重复。

2.3、AiPy启动!

基于我们的提示词,AiPy首先对任务进行了拆解

[步骤1] 检查并创建必要的文件夹结构

[步骤2] 遍历daka文件夹获取视频文件列表

[步骤3] 初始化人体检测器

[步骤4] 处理每个视频文件,检测人体并截图

[步骤5] 实现截图间隔控制

制定完成计划后,AiPy就开始编写代码了,部分代码展示如下:

import osimport cv2import timefrom datetime import datetime# 支持的视频格式SUPPORTED_VIDEO_FORMATS = ('.mp4', '.avi', '.mov', '.mkv', '.flv', '.wmv')def init_folders():# 确保daka文件夹存在if not os.path.exists('daka'):os.makedirs('daka')print("已创建daka文件夹,请将视频文件放入其中")# 确保截图文件夹存在if not os.path.exists('dakajietu'):os.makedirs('dakajietu')print("已创建dakajietu文件夹用于保存截图")def get_video_files():"""获取daka文件夹中的所有视频文件"""video_files = []for file in os.listdir('daka'):if file.lower().endswith(SUPPORTED_VIDEO_FORMATS):video_files.append(os.path.join('daka', file))return video_filesdef process_video(video_path, last_capture_time):"""处理单个视频文件,检测人体并截图"""# 初始化人体检测器hog = cv2.HOGDescriptor()hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())cap = cv2.VideoCapture(video_path)if not cap.isOpened():print(f"无法打开视频文件: {video_path}")return last_capture_timeprint(f"开始处理视频: {os.path.basename(video_path)}")while cap.isOpened():ret, frame = cap.read()if not ret:break# 调整帧大小以提高处理速度frame = cv2.resize(frame, (640, 360))# 检测人体boxes, _ = hog.detectMultiScale(frame, winStride=(4, 4), padding=(8, 8), scale=1.05)# 如果检测到人体且满足时间间隔current_time = time.time()if len(boxes) > 0 and (current_time - last_capture_time) >= 5:# 保存截图timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")filename = f"dakajietu/{timestamp}.jpg"cv2.imwrite(filename, frame)print(f"检测到人体,已保存截图: {filename}")last_capture_time = current_time# 按q键可提前退出if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()return last_capture_timedef main():init_folders()video_files = get_video_files()if not video_files:print("daka文件夹中没有找到视频文件,请添加视频文件后再运行")returnprint(f"找到 {len(video_files)} 个视频文件:")for video in video_files:print(f"- {os.path.basename(video)}")# 初始化最后截图时间last_capture_time = 0# 处理每个视频文件for video_file in video_files:last_capture_time = process_video(video_file, last_capture_time)if __name__ == "__main__":main()

2.4、计划赶不上变化?

由于当前环境不支持GUI操作,所以进行到步骤4的时候出现bug。

但对于AiPy来说完全不是问题,基于错误反馈,AiPy移除了对cv2.waitKey()的依赖,同时,我将优化代码结构,提高检测准确性并添加更多错误处理。

主要改进点:

  1. 移除了cv2.waitKey()调用,解决了GUI错误
  2. 添加了异常处理,提高程序健壮性
  3. 优化了人体检测参数,平衡性能与准确性
  4. 添加了帧跳过机制,提高处理速度
  5. 增加了更详细的处理日志

2.5、最终版本

实际效果完全超出预期!我们在提示词里提到的功能全都稳稳实现,连那些没细讲的部分,AiPy 都能靠智能算法自动优化配置,像搭积木一样把功能模块完美拼在一起!

下面是首次运行提取的视频人物截图,以及生成的识别脚本。

三、一劳永逸的可反复执行脚本

3.1、确定脚本的保存路径

如果没有特别指定,所以生成的文件都是保存在AiPy的工作目录,比如:C:\Users\Administrator\.aipyapp\work。

3.2、再次执行

我们先把文件内的视频换成你所需要识别的其他视频。

然后在终端打开工作文件夹,点击python daka(1).py运行即可。

通过使用 AiPy 编写的这个简单脚本,我们成功实现了监控视频的自动监察功能,让查找关键画面变得轻松又高效。希望这个方法能帮到经常和监控视频打交道的朋友们,如果你在使用过程中遇到任何问题,或者有更好的优化建议,欢迎在评论区交流讨论!

四、写在最后:AI不是颠覆,而是让简单的事情落地

有人可能会问:「用AI做这个,是不是有点杀鸡用牛刀?」但这不本就是科技发展意义吗,试想一下作为一个监控室的保安、视频档案室的职员或者剪辑工作室的员工,不需要代码基础也能做出一些提高的工作效率的工具,让AI帮你打工。

从来就不是什么"黑科技",而是AI落地的常态:用成熟的技术解决具体的问题,让工具适配人,而不是让人适应工具。

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

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

相关文章

期货反向跟单-终止盘手合作原则(二)

在期货反向跟单的领域中,数据就是实打实的真金白银,是策略能否持续盈利的核心价值所在。然而,许多团队在实际运营过程中,都遭遇了相似的困境:期初策略运转良好,可随着时间推移,数据表现却每况愈…

【Unity】MiniGame编辑器小游戏(三)马赛克【Mosaic】

更新日期:2025年6月17日。 项目源码:后续章节发布 索引 马赛克【Mosaic】一、游戏最终效果二、玩法简介三、正式开始1.定义游戏窗口类2.规划游戏窗口、视口区域3.地图方块阵列①.定义方块结构体②.生成方块阵列③.计算九宫格黑色方块数量④.排除任意九宫…

基于深度学习的智能图像质量评估系统:技术与实践

前言 在数字图像处理和计算机视觉领域,图像质量评估(Image Quality Assessment, IQA)是一个重要的研究方向。图像质量评估的目标是通过算法自动评估图像的质量,包括清晰度、对比度、噪声水平等。传统的图像质量评估方法主要依赖于…

【Golang面试题】Go语言实现请求频率限制

Go语言实现请求频率限制:从计数器到令牌桶的完整指南 在实际开发中,接口被恶意刷请求是常见问题。本文将深入探讨Go语言中四种主流的请求限流方案,从简单到复杂逐步深入,助你构建高可用服务。 一、基础方案:计数器法…

11Labs 增长负责人分享:企业级市场将从消费级或开发者切入丨Voice Agent 学习笔记

本文摘自 Founder Park AI 产品如何做增长,ElevenLabs的案例很值得学习。 专注于 AI 语音生成的独角兽企业 ElevenLabs 可以说一直在高速增长。在今年 1 月完成 1.8 亿美元 C 轮融资后,ElevenLabs 的估值突破 30 亿,直指 33 亿美元。2024 年…

Linux 命令:grep

概述 在Linux系统里,grep是一款十分实用的命令行工具,它主要用于在文件或者输入流中搜索符合特定模式的文本。下面为你详细介绍它的用法。资料已经分类整理好:https://pan.quark.cn/s/26d73f7dd8a7 基本语法 grep [选项] 搜索模式 [文件..…

Java八股文——MySQL「架构篇」

MySQL主从复制了解吗 面试官您好,我了解MySQL的主从复制。它是构建高可用、高可扩展数据库架构的核心基石。 1. 主从复制的核心原理与流程 整个主从复制的过程,就是一场围绕 binlog(二进制日志) 的“接力赛”。这个过程主要可以…

ubuntu下python版本升级导致pyqt不能正常运行解决

最终解决方案 ubuntu下多python版本pyqt兼容性问题解决 python3.9 -m pip install --upgrade --force-reinstall --prefer-binary pyqt5)尝试解决方案一(失败) 系统默认python版本可以,其他版本不行 sudo apt install pyqt5-dev-tools尝试解决方案二(失败) 一直…

AIGC工具平台-VideoRetalking音频对口型数字人

唇形合成技术正逐渐成为AIGC内容生产领域的重要工具,能够实现音视频数据的高度融合。基于VideoRetalking模块的可视化界面降低了技术门槛,使非技术背景的用户也能便捷体验唇形驱动数字人合成的流程。 本文重点解析该模块的使用方式及开发流程&#xff0…

前端项目如何部署为https

如何为项目部署设置HTTPS 设置HTTPS是保护网站数据传输安全的重要步骤。以下是设置HTTPS的主要方法: 1. 获取SSL/TLS证书 免费证书选项 Let’s Encrypt:最流行的免费证书颁发机构Cloudflare:提供免费SSL和CDN服务ZeroSSL:另一…

nginx 配置 系统升级页面

默认80端口配置如下: server {listen 80; # 指定端口号server_name 192.168.2.96; # 替换为实际域名或IP# 全局重定向到升级页面(排除自身防循环)if ($request_uri !~* "/upgrade.html") {return 307 /upgrade.html; # 临时重定…

计算机基础(一)——设计模式

一、设计模式 设计模式(Design Patterns)是软件开发中反复出现问题的解决方案的通用描述。 它是经过总结、提炼的高效代码结构和设计方案,帮助开发者写出更灵活、可维护和可扩展的代码。 优点注意点规范代码结构,提高开发效率设…

Mac电脑 磁盘检测和监控工具 DriveDx

DriveDx Mac 一款不监视驱动器的内置S.M.A.R.T.状态的先进驱动器运行状况诊断和监测工具。 还分析了所有驱动器健康密切相关的指标, SSD或硬盘驱动器故障(像SSD磨损 /耐久性,坏扇区重新分配,离线坏道,未定扇形区&…

频繁操作Json嵌套数据PostgreSQL配合JSON操作工具类+sql

文章目录 1.工具类2.依赖3.sql 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 背景:因为频繁操作json嵌套数据 PostgreSQL得…

京东云 centos vim有操作混乱的问题

centos云服务器 安装micro编辑器可以解决 yum install micro

限流系列之二:TDMQ CKafka 版限流方案详解及最佳实践

导语 在当今大数据和实时通信的时代,消息队列在分布式系统中扮演着至关重要的角色。CKafka 作为一种高性能、高可靠的消息中间件,被广泛应用于各种业务场景中。然而,随着业务的增长和数据流量的增加,CKafka 在生产者和消费者以极…

消息队列的基本概念

文章目录 为什么需要消息队列?🤔🎯 核心价值📋 使用场景 🏗️ 架构层面的基本概念整体架构图📦 核心组件详解1. Broker(消息代理)2. Topic(主题)3. Partition…

Shell脚本中和||语法解析

https://www.cnblogs.com/liuyuelinfighting/p/16377705.html 在 Shell 脚本中,&& 和 || 是逻辑操作符,用于根据前一个命令的退出状态(成功或失败)决定是否执行后续命令。这种语法称为 命令链(Command Chainin…

MySQL中的常见运算符

精选专栏链接 🔗 MySQL技术笔记专栏Redis技术笔记专栏大模型搭建专栏Python学习笔记专栏深度学习算法专栏 欢迎订阅,点赞+关注,每日精进1%,共攀技术高峰 更多内容持续更新中!希望能给大家带来帮助~ &…

高级IO技术详解:阻塞/非阻塞IO、多路复用与内存映射

高级IO技术详解:阻塞/非阻塞IO、多路复用与内存映射 关键词:阻塞IO 非阻塞IO select/poll/epoll mmap 一、阻塞IO vs 非阻塞IO 类型行为特点设置方式阻塞IO- 读空管道阻塞- 写满管道阻塞默认模式非阻塞IO- 读空文件返回 -1,errnoEAGAIN- 写满…