yolov9直接调用zed相机实现三维测距(python)

news/2024/4/29 3:25:45

yolov9直接调用zed相机实现三维测距(python)

  • 1. 相关配置
  • 2. 相关代码
    • 2.1 相机设置
    • 2.2 测距模块
    • 2.2 实验结果

相关链接
此项目直接调用zed相机实现三维测距,无需标定,相关内容如下:

1. yolov4直接调用zed相机实现三维测距
2.yolov5直接调用zed相机实现三维测距(python)
3. yolov8直接调用zed相机实现三维测距(python)
4.具体实现效果已在哔哩哔哩发布,点击此链接跳转

本篇博文工程源码下载(麻烦github给个星星)
下载链接:https://github.com/up-up-up-up/zed-yolov9

附:Zed调用YOLOv7测距也已经实现,但是3060笔记本6G显存带不动,在大现存服务器上可以运行,可能是由于YOLOv7网络结构导致的,由于不具备普适性,就不再写相关文章了,有需要的可以仿照这个代码去改写

1. 相关配置

python==3.7
Windows-pycharm
zed api 具体配置见 (zed api 配置步骤)

2. 相关代码

2.1 相机设置

zed = sl.Camera()
input_type = sl.InputType()if opt.svo is not None:input_type.set_from_svo_file(opt.svo)# Create a InitParameters object and set configuration parametersinit_params = sl.InitParameters(input_t=input_type, svo_real_time_mode=True)init_params.camera_resolution = sl.RESOLUTION.HD720init_params.coordinate_units = sl.UNIT.METERinit_params.depth_mode = sl.DEPTH_MODE.ULTRA  # QUALITYinit_params.coordinate_system = sl.COORDINATE_SYSTEM.RIGHT_HANDED_Y_UPinit_params.depth_maximum_distance = 5runtime_params = sl.RuntimeParameters()status = zed.open(init_params)

2.2 测距模块

for *xyxy, conf, cls in reversed(det):xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist()  # normalized xywhcent_x = round(xywh[0] * im0.shape[1])cent_y = round(xywh[1] * im0.shape[0])cent_w = round(xywh[2] * im0.shape[1])point_1 = round(cent_x - 0.4 * cent_w)point_2 = round(cent_x + 0.4 * cent_w)wide_value_1 = point_cloud.get_value(point_1, cent_y)[1]wide_value_2 = point_cloud.get_value(point_2, cent_y)[1]try:wide = round(wide_value_1[0], 4) - round(wide_value_2[0], 4)wide = round(abs(wide * 1000))except:wide = 0.00passpoint_cloud_value = point_cloud.get_value(cent_x, cent_y)[1]point_cloud_value = point_cloud_value * -1000.00if point_cloud_value[2] > 0.00:try:point_cloud_value[0] = round(point_cloud_value[0])point_cloud_value[1] = round(point_cloud_value[1])point_cloud_value[2] = round(point_cloud_value[2])print("x:", point_cloud_value[0], "y:", point_cloud_value[1], "z:",point_cloud_value[2], "W:", wide)txt = 'x:{0} y:{1} z:{2} w:{3}'.format(point_cloud_value[0], point_cloud_value[1],point_cloud_value[2], wide)a=point_cloud_value[0]b=point_cloud_value[1]c=point_cloud_value[2]distance = ((a ** 2 + b ** 2 + c ** 2) ** 0.5)# annotator.box_label(xyxy, txt, color=(255, 0, 0))label = f'{names[int(cls)]} {conf:.2f} 'label = label + " " +"dis:" +str(distance)annotator.box_label(xyxy, label, color=colors(c, True))except:pass

2.2 实验结果

测距功能
请添加图片描述
视频展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11850.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

ROS2高效学习第十章 -- ros2 高级组件之大型项目中的 launch 其二

ros2 高级组件之大型项目中的 launch 1 前言和资料2 正文2.1 启动 turtlesim,生成一个 turtle ,设置背景色2.2 使用 event handler 重写上节的样例2.3 turtle_tf_mimic_rviz_launch 样例 3 总结 1 前言和资料 早在ROS2高效学习第四章 – ros2 topic 编程…

第十二届蓝桥杯省赛真题(C/C++大学B组)

目录 #A 空间 #B 卡片 #C 直线 #D 货物摆放 #E 路径 #F 时间显示 #G 砝码称重 #H 杨辉三角形 #I 双向排序 #J 括号序列 #A 空间 #include <bits/stdc.h> using namespace std;int main() {cout<<256 * 1024 * 1024 / 4<<endl;return 0; } #B 卡片…

JRT高效率开发

得益于前期的基础投入&#xff0c;借助代码生成的加持&#xff0c;本来计划用一周实现质控物维护界面&#xff0c;实际用来四小时左右完成质控物维护主体&#xff0c;效率大大超过预期。 JRT从设计之初就是为了证明Spring打包模式不适合软件服务模式&#xff0c;觉得Spring打包…

《前端防坑》- JS基础 - 你觉得typeof nullValue === null 么?

问题 JS原始类型有6种Undefined, Null, Number, String, Boolean, Symbol共6种。 在对原始类型使用typeof进行判断时, typeof stringValue string typeof numberValue number 如果一个变量(nullValue)的值为null&#xff0c;那么typeof nullValue "?" const u …

dp小兰走迷宫

昨天学习了bfs的基本概念&#xff0c;今天来做一道经典习题练练手吧&#xff01; bfs常用的两类题型 1.从A出发是否存在到达B的路径(dfs也可) 2.从A出发到B的最短路径&#xff08;数小:<20才能用dfs&#xff09; 遗留的那个问题的答案- 题目&#xff1a;走迷宫 #incl…

Unity核心学习

目录 认识模型的制作流程模型的制作过程 2D相关图片导入设置图片导入概述纹理类型设置纹理形状设置纹理高级设置纹理平铺拉伸设置纹理平台打包相关设置 SpriteSprite Editor——Single图片编辑Sprite Editor——Multiple图片编辑Sprite Editor——Polygon图片编辑SpriteRendere…