该测试依然基于网络图传
在开始测试之前,需要在电脑上安装numpy以及yoloV5
在电脑端,编写Python代码如下,其中url地址为开发板屏幕显示的网址
其运行流程为:从url获取图像并进行预处理 -> 基于yolo模型对物体进行分类 -> 框选物体并显示名称和当前帧率,在终端打印计算时间和帧率
import cv2
import torch
import time
from yolov5 import YOLOv5
import urllib.request
import numpy as np
url = 'http://192.168.1.15:80/capture' # M5CoreS3的IP地址
# Load the YOLOv5 model
model_path = "./yolov5s.pt" # 模型路径
device = torch.device("cpu")
model = YOLOv5(model_path, device=device)
while True:
img_resp = urllib.request.urlopen(url) # 从URL获取图像数据
imgnp = np.array(bytearray(img_resp.read()), dtype=np.uint8) # 将图像数据转换为NumPy数组
frame = cv2.imdecode(imgnp, -1) # 解码JPEG图像数据
# 记录处理开始时间
start_time = time.time()
# 将帧传递给模型进行预测
results = model.predict(frame, size=640) # 调整输入图像大小为640x640
# 获取预测结果并在图像上绘制
annotated_frame = results.render()[0] # 直接取第一个结果(YOLOv5的render返回的是列表)
# 确保annotated_frame是可写的
if not annotated_frame.flags['WRITEABLE']:
annotated_frame = annotated_frame.copy()
# 记录处理结束时间
end_time = time.time()
# 计算帧率
processing_time = end_time - start_time
fps = 1 / processing_time
# 在图像上绘制帧率
cv2.putText(annotated_frame, f"FPS: {fps:.2f}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
# 显示带有预测结果的帧
cv2.imshow("YOLOv5 Detection", annotated_frame)
# 打印详细信息到终端
print(f"Processed frame in {processing_time:.4f} seconds, FPS: {fps:.2f}")
# 按下 'q' 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 关闭所有窗口
cv2.destroyAllWindows()其中yoloV5模型如下,置于源代码同一文件路径下
实现效果如下

我要赚赏金
