大疆无人机搭载树莓派进行目标旋转检测
环境部署
首先是环境创建,创建虚拟环境,名字叫 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
毫秒作用,足够满足我的要求
我们看一下最终的实现效果: