nuScenes数据集3dBox转换2dBox
文章目录
- 前言
- 一、主要函数
- 1.从3d视角投影到2d平面(均为图像下)
- 2.得到目标在图像视角下的2d坐标(坐上,右下)
- 二、效果展示
- 三、源码以及运行
- 1.源码链接
- 2.源码运行
前言
接续上篇文章nuScenes数据集3Dbounding box的更新,本篇文章主要讲解如何从图像的3dbox转到2dbox(内附源码)
注意:在nuScenes源码文件下有一个get_2d_annotation_as_json.py,运行之后可以直接得到2d注释信息,但是小编在运行得到后,发现会有遗漏,也就是多个相机下的sanples数量不等。因此加以改进得到所有的注释信息。
一、主要函数
1.从3d视角投影到2d平面(均为图像下)
代码如下:
def view_points(points: np.ndarray, view: np.ndarray, normalize: bool) -> np.ndarray:
# points就是我们的3d框的8个角坐标;view就是我们所需要用到对应相机的相机内参。assert view.shape[0] <= 4assert view.shape[1] <= 4assert points.shape[0] == 3viewpad = np.eye(4)viewpad[:view.shape[0], :view.shape[1]] = viewnbr_points = points.shape[1]points = np.concatenate((points, np.ones((1, nbr_points))))points = np.dot(viewpad, points)points = points[:3, :]if normalize:points = points / points[2:3, :].repeat(3, 0).reshape(3, nbr_points)return points
2.得到目标在图像视角下的2d坐标(坐上,右下)
def post_process_coords(corner_coords: List,imsize: Tuple[int, int] = (1600, 900)) -> Union[Tuple[float, float, float, float], None]:polygon_from_2d_box = MultiPoint(corner_coords).convex_hull # 多边形img_canvas = box(0, 0, imsize[0], imsize[1]) # 图像的画布 box(minx,miny,maxx,maxy)左上右下if polygon_from_2d_box.intersects(img_canvas): # 如果相交img_intersection = polygon_from_2d_box.intersection(img_canvas)intersection_coords = np.array([coord for coord in img_intersection.exterior.coords])min_x = min(intersection_coords[:, 0])min_y = min(intersection_coords[:, 1])max_x = max(intersection_coords[:, 0])max_y = max(intersection_coords[:, 1])return min_x, min_y, max_x, max_yelse:return None
二、效果展示
在生成2dbox的时候,加入了id信息。
从上面相连的两帧可以看出,同一个物体的id号是没有改变的,可以很好的应用到数据集的检测、跟踪过程。
放一个场景下的一段GIF图:
从这里可以更清楚的看到一个scene下,目标的id是始终保持一致的。
三、源码以及运行
1.源码链接
源码链接
2.源码运行
获取源码后,需要更改dataroot,确保数据集的路径准确。在pycharm上直接运行draw_2d_box.py即可;另外一个py文件是把同一场景下的6个摄像机的图片放在一起。
nuScenes数据集3dBox转换2dBox相关推荐
- Nuscenes数据集转换voc_xml格式用于yolov4训练
1.下载nuscenes数据集 数据集下载地址https://www.nuscenes.org/download,这里下载v1.0-mini为例. 2.转换nuscenes的json格式(3D转2D) ...
- nuScenes数据集3Dbonding box
文章目录 前言 一.nuScenes数据集box标注信息 二.如何在对应图像上画出3D框 1.如何得到图像下的3D框角坐标 1.1 得到注释的box信息,使用get_box()函数 1.2 标注的bo ...
- 【mmdetection3d】——3D 目标检测 NuScenes 数据集
3D 目标检测 NuScenes 数据集 本页提供了有关在 MMDetection3D 中使用 nuScenes 数据集的具体教程. 准备之前 您可以在这里下载 nuScenes 3D 检测数据并解压 ...
- nuScenes 数据集(CVPR 2020)
nuScenes 数据集(CVPR 2020) 摘要 1. 引言 1.1 贡献 1.2 相关数据集 2. nuScenes数据集 3. 任务和指标 3.1 检测 3.2 跟踪 4. 实验 4.1 基线 ...
- 在远程linux服务器上用wget命令下载nuscenes数据集出现HTTP request sent, awaiting response... 403 Forbidden错误
问题描述: 在使用wget命令在服务器上下载nuscenes数据集的时候,出现了403的错误 问题原因: 查了一些博客说是wget命令后面的网址有问题 想到自己实在google浏览器上复制的下载网址, ...
- VIL-100视频车道线实例数据集格式转换
VIL-100车道线数据集 数据集简介及下载路径 数据集格式转换 支持的标签转化格式:1.车道线实例分割标签; 2.车道线实例点集标签(Tusimple标注形式) 数据集相关示例图 - 原图标签可视化 ...
- nuScenes数据集详细介绍
nuScenes网上介绍资料较多,但是大部分仅仅是对官网的翻译,缺乏各个文件的内在联系介绍.例如,nuScenes激光雷达的数据格式,点云包含哪几种属性.再比如,sample文件夹和sweeps文件夹 ...
- 【舰船数据集格式转换】HRSID数据集VOC转COCO
系列文章目录 [舰船数据集格式转换]AIR-SARShip-1.0数据集VOC转COCO [舰船数据集格式转换]AIR-SARShip-2.0数据集VOC转COCO 文章目录 系列文章目录 前言 一. ...
- 自动驾驶nuScenes数据集——一个KITTI以外的新数据集
1. 数据集简介 (图片来源:https://www.nuscenes.org/data-collection ) nuScenes数据集 是自动驾驶公司nuTonomy建立的大规模自动驾驶数据集,该 ...
最新文章
- 自定义Android注解Part3:绑定
- pycharm不进入test模式
- 通信网络基础期末复习-第一章和第二章-概论和端到端的传输协议
- java中 instanceof 的用法
- 203. 移除链表元素(C语言)
- 每天走6000步,血糖真的可以恢复正常吗?
- paip.uapi 获取网络url内容html 的方法java php ahk c++ python总结.
- 小米note位置服务器,小米Note
- 流程图怎么画?绘制一个流程图的简单操作方法
- 树莓派4b自带wifi_树莓派4B(ubuntu)无线网络配置
- cmd安装pip以及第三方库的最简单的安装方法
- Python 学习:函数
- 奇迹暖暖登录显示服务器满,奇迹暖暖登录不是全屏
- 2022吴恩达机器学习课程——第一课
- HDU 6078 Wavel Sequence (dp)
- 高通AP侧新增AT命令流程
- 计算机机房年度重点工作,信息中心计算机的机房建设要求最新.doc
- 511遇见安卓手机投屏支持一键转无线群控
- 北京公共自行车租赁方法_百度知道
- Mapbox、GeoServer离线部署矢量地图
热门文章
- word文档出现乱码的解决方法
- pcb-新手入门级(注意事项)(避坑)
- 数据结构练习题---先序遍历二叉树
- “天龙八部基于颜色的简易动作式外挂”的增强
- 通俗易懂!一文看懂手机Root的操作与防护
- 网众无盘io服务器超时,网众无盘注意问题的解决教程
- cygwin 查找ip地址_NBtscan扫描整个局域网IP及MAC地址
- ASP .NET(基于.NET 6.0)源码解读
- win10电脑设置鼠标文本选择时光标样式和颜色
- C#,纽曼-康韦数(Newman Conway Number)的算法与源代码