殺瘋了,這個(gè) AI+Python 智能體救了看門(mén)老大爺!
最近AiPy很火,我用了有一段時(shí)間了,感覺(jué)嚴(yán)重影響睡眠,感覺(jué)這東西容易上癮,今天推薦給大家。
AiPy它是基于AI+Python,官方的說(shuō)法是他們給大模型裝上了手腳,也就是說(shuō),用大白話就能自動(dòng)操作電腦、控制手機(jī)、甚至連家里的智能燈泡也能控制,聽(tīng)起來(lái)有點(diǎn)逆天。然后AiPy是個(gè)開(kāi)源項(xiàng)目,有命令行版和客戶(hù)端。
「開(kāi)源地址」:https://github.com/knownsec/aipyapp
而今天,我來(lái)給大家分享一個(gè)我最近剛剛用AiPy跑過(guò)的案例。起因是,朋友是某個(gè)公司保安,平時(shí)經(jīng)常有人來(lái)找他查公司監(jiān)控,東西丟了要查監(jiān)控,考勤遲到早退也要查,但是視頻又很長(zhǎng),每次翻來(lái)翻去,很費(fèi)時(shí),簡(jiǎn)直煩死了,于是找我?guī)兔?,然后我就要?lái)視頻,用AiPy來(lái)嘗試幫他提高效率。
下面,我來(lái)分享一下思路、代碼和實(shí)踐經(jīng)驗(yàn),希望能幫到有需要的朋友們,有同樣場(chǎng)景的可以拿去直接用。

一、工具和提示詞準(zhǔn)備
1. 下載安裝
在AiPy官網(wǎng)(https://www.aipyaipy.com/)免費(fèi)下載,為了方便大家快速上手,我用客戶(hù)端版,支持 Windows 和 macOS,喜歡命令行的朋友也可以選 CLI版本,用
pip install aipyapp安裝,下載好后,界面長(zhǎng)這樣:

2. 寫(xiě)提示詞
根據(jù)官方介紹,AiPy是一個(gè)融合了LLM能力與Python程序和生態(tài)的智能體,我只需要把需求講清楚告訴 AiPy 就行。
根據(jù)自己的需求,我寫(xiě)出提示詞如下:
當(dāng)前目錄有一個(gè)daka文件夾,需要你幫忙寫(xiě)一個(gè)腳本名稱(chēng)為daka.py,可以識(shí)別daka文件夾內(nèi)部的視頻,每當(dāng)有人經(jīng)過(guò)的時(shí)候就能截圖保存到dakajietu文件夾中,識(shí)別過(guò)程要避免重復(fù)。
二、AiPy自動(dòng)拆解任務(wù)與編寫(xiě)代碼
AiPy自動(dòng)把任務(wù)拆成幾步:
- 步驟1:檢查并創(chuàng)建必要的文件夾結(jié)構(gòu)
 - 步驟2:遍歷daka文件夾獲取視頻文件列表
 - 步驟3:初始化人體檢測(cè)器
 - 步驟4:處理每個(gè)視頻文件,檢測(cè)人體并截圖
 - 步驟5:實(shí)現(xiàn)截圖間隔控制
 

制定完成計(jì)劃后,AiPy就開(kāi)始編寫(xiě)代碼了,部分代碼展示如下:
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("已創(chuàng)建daka文件夾,請(qǐng)將視頻文件放入其中")
    
    # 確保截圖文件夾存在
    ifnot os.path.exists('dakajietu'):
        os.makedirs('dakajietu')
        print("已創(chuàng)建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):
    """處理單個(gè)視頻文件,檢測(cè)人體并截圖"""
    # 初始化人體檢測(cè)器
    hog = cv2.HOGDescriptor()
    hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
    
    cap = cv2.VideoCapture(video_path)
    ifnot cap.isOpened():
        print(f"無(wú)法打開(kāi)視頻文件: {video_path}")
        return last_capture_time
    
    print(f"開(kāi)始處理視頻: {os.path.basename(video_path)}")
    
    while cap.isOpened():
        ret, frame = cap.read()
        ifnot ret:
            break
        
        # 調(diào)整幀大小以提高處理速度
        frame = cv2.resize(frame, (640, 360))
        
        # 檢測(cè)人體
        boxes, _ = hog.detectMultiScale(frame, winStride=(4, 4), padding=(8, 8), scale=1.05)
        
        # 如果檢測(cè)到人體且滿足時(shí)間間隔
        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"檢測(cè)到人體,已保存截圖: {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文件夾中沒(méi)有找到視頻文件,請(qǐng)?zhí)砑右曨l文件后再運(yùn)行")
        return
    
    print(f"找到 {len(video_files)} 個(gè)視頻文件:")
    for video in video_files:
        print(f"- {os.path.basename(video)}")
    
    # 初始化最后截圖時(shí)間
    last_capture_time = 0
    
    # 處理每個(gè)視頻文件
    for video_file in video_files:
        last_capture_time = process_video(video_file, last_capture_time)
if __name__ == "__main__":
    main()三、自動(dòng)優(yōu)化及修復(fù)
跑第一次時(shí),因?yàn)榄h(huán)境不支持GUI操作,所以進(jìn)行到步驟4的時(shí)候出現(xiàn)bug。

基于錯(cuò)誤反饋,AiPy自動(dòng)移除了對(duì)cv2.waitKey()的依賴(lài),同時(shí)還優(yōu)化了代碼結(jié)構(gòu),提高檢測(cè)準(zhǔn)確性并添加更多錯(cuò)誤處理。
主要改進(jìn)點(diǎn):
- 移除了cv2.waitKey()調(diào)用,解決了GUI錯(cuò)誤
 - 添加了異常處理,提高程序健壯性
 - 優(yōu)化了人體檢測(cè)參數(shù),平衡性能與準(zhǔn)確性
 - 添加了幀跳過(guò)機(jī)制,提高處理速度
 - 增加了更詳細(xì)的處理日志
 
四、最終版本

實(shí)際效果完全超出預(yù)期!我在提示詞里提到的功能全都穩(wěn)穩(wěn)實(shí)現(xiàn),連那些沒(méi)細(xì)講的部分,AiPy都能靠智能算法自動(dòng)優(yōu)化配置,像搭積木一樣把功能模塊完美拼在一起!
五、效果展示
下面是首次運(yùn)行提取的視頻人物截圖。

六、一勞永逸的可反復(fù)執(zhí)行腳本
1. 確定腳本的保存路徑
如果沒(méi)有特別指定,所以生成的文件都是保存在AiPy的工作目錄,比如:C:\Users\Administrator\.aipyapp\work

2. 再次執(zhí)行
我先把文件內(nèi)的視頻換成所需要識(shí)別的其他視頻。
然后在終端打開(kāi)工作文件夾,點(diǎn)擊python daka.py運(yùn)行即可。

依靠AiPy編寫(xiě)的腳本,我成功搞定了監(jiān)控視頻的自動(dòng)監(jiān)察功能,讓查找關(guān)鍵畫(huà)面變得輕松又高效。
七、解鎖更多使用體驗(yàn)
最近,我也看了不少AiPy官方和網(wǎng)友分享的案例,發(fā)現(xiàn)只要是能用Python自動(dòng)調(diào)度完成的任務(wù),基本都能交給AiPy搞定。
其實(shí)原理也很簡(jiǎn)單:AiPy 本質(zhì)上就是把大模型的語(yǔ)言理解能力和Python的編程能力結(jié)合起來(lái),通過(guò)生成、調(diào)試、執(zhí)行Python代碼,把任務(wù)跑通。借助Python強(qiáng)大的生態(tài),AiPy能高效搞定本地文件處理、應(yīng)用控制、數(shù)據(jù)分析、物聯(lián)網(wǎng)聯(lián)動(dòng)等多種任務(wù)。















 
 
 












 
 
 
 