環境部署
首先是環境創建,創建虛擬環境,名字叫 pengxiang
python -m venv pengxiang
隨后激活環境
source pengxiang/bin/activate
接下來便是依賴包安裝過程了:
pip install onnxruntime #推理框架
pip install fastapi uvicorn[standard] #網絡請求與響應
pip install tensorflow #由于使用的是tflite推理,所以需要安裝
pip install opencv-python #安裝opencv的圖像包
pip install python-multipart #解析 multipart 編碼的請求體
至此環境就基本安裝完成了,我們啟動服務:
請求處理
uvicorn app:app --host 0.0.0.0 --port 16566
使用python
發送請求
import cv2
import requests
# 配置服務器地址
server_url = "http://10.13.14.68:16566/api/detect/"#
# 打開攝像頭
cap = cv2.VideoCapture(0) # 參數 0 表示默認攝像頭
i=0
while True:# 讀取一幀圖像ret, frame = cap.read()if not ret:print("無法讀取攝像頭數據!")break# 將圖像編碼為 JPEG 格式_, img_encoded = cv2.imencode(".jpg", frame)files = {"file": ("frame.jpg", img_encoded.tobytes(), "image/jpeg")}# 設置 distance 參數params = {"distance": 6} # 這里可以動態設置 distance 的值try:# 發送 POST 請求response = requests.post(server_url, files=files, params=params,verify=False) # 忽略 SSL 驗證result = response.json()i=i+1print("檢測次數:", i)# 處理返回結果print("檢測結果:", result)except Exception as e:print(f"請求失敗: {e}")
# 釋放資源
cap.release()
cv2.destroyAllWindows()
請求結果,可以看到基本穩定在350
毫秒作用,足夠滿足我的要求
我們看一下最終的實現效果: