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

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落地的常态:用成熟的技术解决具体的问题,让工具适配人,而不是让人适应工具。

相关文章:

  • 本地使用 modelscope 大模型 来进行文本生成视频(Text-to-Video)
  • pythonday50
  • OpenLayers 加载GeoTIFF影像
  • Antv G2入门教程
  • Java常量与数据类型
  • 面向智能制造场景的永磁同步电机预测控制系统设计
  • day036-lsyncd实时同步服务与网站存储架构
  • Day04_C语言基础数据结构重点复习笔记20250618
  • Happy-LLM task2 第一章 NLP 基础概念(2天)
  • 27.自连接
  • 【面试题001】生产环境中如何排查MySQL CPU占用率高达100%?
  • 详细讲解Redis为什么被设计成单线程
  • C与C++中的可变参数
  • 使用@SpringJUnitConfig注解开发遇到的空指针问题
  • 工信部发布《中国工业软件产业发展研究报告(2025)》:PLM垄断加剧,Ai为国产PLM软件发展契机
  • 基于大模型的胆囊结石全周期诊疗方案研究报告
  • voronoi图,凸壳,和早已遗忘的定不定积分
  • Flutter TCP通信
  • vscode连接不上服务器问题修复
  • golang--数据类型与存储
  • 那些钓鱼网站是怎么做的/软文写作范例大全
  • 东莞营销网站建设哪个平台好/关键词林俊杰mp3在线听
  • 网站开发制作平台/做优化关键词
  • 天津做网站印标/杭州推广系统
  • oa办公系统开发/排名优化系统
  • 简单的模板网站/app拉新推广平台代理