zed yolo
时间: 2025-03-07 18:08:18 浏览: 32
### 如何在ZED相机上使用YOLO进行物体检测
#### 安装环境配置
遵循官方文档指导完成必要的软件包和依赖项安装可以确保开发环境的正常运行[^1]。
#### 技术组合优势
此方案融合了ZED摄像头出色的深度感知能力与YOLO高效的目标检测性能,为用户提供了一种精确且快速的方式来进行目标定位及距离测量[^2]。通过这种结合不仅提升了传统单目视觉系统的局限性,在复杂场景下的鲁棒性和准确性也得到了极大增强。
#### 工作流程解析
具体操作过程中,YOLO负责图像中感兴趣区域(ROI)的选择,即锁定并标记出待测对象;随后,ZED相机会基于这些被选中的区域提供详细的三维坐标信息,包括但不限于该区域内各像素点到摄像机之间的实际物理间距。最终,借助于所获得的空间几何参数,系统能够准确无误地计算出目标相对于观测者的确切方位及其大小尺寸等特征量[^4]。
```python
import pyzed.sl as sl
from ultralytics import YOLO
def detect_and_measure():
# 初始化ZED相机设置
init_params = sl.InitParameters()
zed = sl.Camera()
status = zed.open(init_params)
if status != sl.ERROR_CODE.SUCCESS:
print("Failed to open ZED camera.")
exit(-1)
runtime_parameters = sl.RuntimeParameters()
image = sl.Mat()
depth_map = sl.Mat()
model = YOLO('yolov8n.pt') # 加载预训练模型
while True:
err = zed.grab(runtime_parameters)
if err == sl.ERROR_CODE.SUCCESS:
zed.retrieve_image(image, sl.VIEW.LEFT)
zed.retrieve_measure(depth_map, sl.MEASURE.DEPTH)
results = model(image.get_data()) # 使用YOLO进行预测
for result in results:
boxes = result.boxes.cpu().numpy()
for box in boxes:
cx, cy = int((box.xyxy[0][0]+box.xyxy[0][2])/2), int((box.xyxy[0][1]+box.xyxy[0][3])/2)
distance_to_object = depth_map.get_value(cx,cy)[1]
print(f"Detected object at ({cx},{cy}) with a distance of {distance_to_object:.2f} meters.")
detect_and_measure()
```
上述代码展示了如何利用Python脚本调用PyZED SDK读取来自ZED设备的数据流,并将其传递给YOLOv8模型以执行实时推理任务。对于每一个成功识别出来的实例,程序会进一步查询对应的深度值从而得出目标的具体位置描述。
阅读全文
相关推荐
















