最近AiPy很火,我用了有一段时间了,感觉严重影响睡眠,感觉这东西容易上瘾,今天推荐给大家。
AiPy它是基于AI+Python,官方的说法是他们给大模型装上了手脚,也就是说,用大白话就能自动操作电脑、控制手机、甚至连家里的智能灯泡也能控制,听起来有点逆天。然后AiPy是个开源项目,有命令行版和客户端。
「开源地址」:https://github.com/knownsec/aipyapp
而今天,我来给大家分享一个我最近刚刚用AiPy跑过的案例。起因是,朋友是某个公司保安,平时经常有人来找他查公司监控,东西丢了要查监控,考勤迟到早退也要查,但是视频又很长,每次翻来翻去,很费时,简直烦死了,于是找我帮忙,然后我就要来视频,用AiPy来尝试帮他提高效率。
下面,我来分享一下思路、代码和实践经验,希望能帮到有需要的朋友们,有同样场景的可以拿去直接用。

一、工具和提示词准备
1. 下载安装
在AiPy官网(https://www.aipyaipy.com/)免费下载,为了方便大家快速上手,我用客户端版,支持 Windows 和 macOS,喜欢命令行的朋友也可以选 CLI版本,用
复制pip install aipyapp
安装,下载好后,界面长这样:

2. 写提示词
根据官方介绍,AiPy是一个融合了LLM能力与Python程序和生态的智能体,我只需要把需求讲清楚告诉 AiPy 就行。
根据自己的需求,我写出提示词如下:
当前目录有一个daka文件夹,需要你帮忙写一个脚本名称为daka.py,可以识别daka文件夹内部的视频,每当有人经过的时候就能截图保存到dakajietu文件夹中,识别过程要避免重复。
二、AiPy自动拆解任务与编写代码
AiPy自动把任务拆成几步:
- 步骤1:检查并创建必要的文件夹结构
- 步骤2:遍历daka文件夹获取视频文件列表
- 步骤3:初始化人体检测器
- 步骤4:处理每个视频文件,检测人体并截图
- 步骤5:实现截图间隔控制

制定完成计划后,AiPy就开始编写代码了,部分代码展示如下:
复制import os
import cv2
import time
from datetime import datetime
# 支持的视频格式
SUPPORTED_VIDEO_FORMATS = ('.mp4', '.avi', '.mov', '.mkv', '.flv', '.wmv')
def init_folders():
# 确保daka文件夹存在
ifnot os.path.exists('daka'):
os.makedirs('daka')
print("已创建daka文件夹,请将视频文件放入其中")
# 确保截图文件夹存在
ifnot 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_files
def process_video(video_path, last_capture_time):
"""处理单个视频文件,检测人体并截图"""
# 初始化人体检测器
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
cap = cv2.VideoCapture(video_path)
ifnot cap.isOpened():
print(f"无法打开视频文件: {video_path}")
return last_capture_time
print(f"开始处理视频: {os.path.basename(video_path)}")
while cap.isOpened():
ret, frame = cap.read()
ifnot 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) > 0and (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'):
break
cap.release()
return last_capture_time
def main():
init_folders()
video_files = get_video_files()
ifnot video_files:
print("daka文件夹中没有找到视频文件,请添加视频文件后再运行")
return
print(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()三、自动优化及修复
跑第一次时,因为环境不支持GUI操作,所以进行到步骤4的时候出现bug。

基于错误反馈,AiPy自动移除了对cv2.waitKey()的依赖,同时还优化了代码结构,提高检测准确性并添加更多错误处理。
主要改进点:
- 移除了cv2.waitKey()调用,解决了GUI错误
- 添加了异常处理,提高程序健壮性
- 优化了人体检测参数,平衡性能与准确性
- 添加了帧跳过机制,提高处理速度
- 增加了更详细的处理日志
四、最终版本

实际效果完全超出预期!我在提示词里提到的功能全都稳稳实现,连那些没细讲的部分,AiPy都能靠智能算法自动优化配置,像搭积木一样把功能模块完美拼在一起!
五、效果展示
下面是首次运行提取的视频人物截图。

六、一劳永逸的可反复执行脚本
1. 确定脚本的保存路径
如果没有特别指定,所以生成的文件都是保存在AiPy的工作目录,比如:C:\Users\Administrator\.aipyapp\work

2. 再次执行
我先把文件内的视频换成所需要识别的其他视频。
然后在终端打开工作文件夹,点击python daka.py运行即可。

依靠AiPy编写的脚本,我成功搞定了监控视频的自动监察功能,让查找关键画面变得轻松又高效。
七、解锁更多使用体验
最近,我也看了不少AiPy官方和网友分享的案例,发现只要是能用Python自动调度完成的任务,基本都能交给AiPy搞定。
其实原理也很简单:AiPy 本质上就是把大模型的语言理解能力和Python的编程能力结合起来,通过生成、调试、执行Python代码,把任务跑通。借助Python强大的生态,AiPy能高效搞定本地文件处理、应用控制、数据分析、物联网联动等多种任务。