殺瘋了,這個 AI+Python 智能體救了看門老大爺!
最近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能高效搞定本地文件處理、應用控制、數據分析、物聯網聯動等多種任務。