当前位置:网站首页>3D detection: fast visualization of 3D box and point cloud
3D detection: fast visualization of 3D box and point cloud
2022-07-07 13:55:00 【Roast zongzi】
3D testing , be used for 3D box, Quick visualization of point cloud , auxiliary debug And analysis :
(Nuscenes,mmdet3d,OpenPCDet And so on )
Be careful : The code is applicable to a variety of models , But notice BEVDet Series and FCOS3D(front View) Choose different series box transformation .
3D box Projection to bev visualization :
import matplotlib.pyplot as plt
import torch
def box3d2x0y0wh(boxes_3d):
# BEVDet/CenterPoints
import numpy as np
n = boxes_3d.shape[0]
box2d = np.zeros((n,4))
# 3dbox --> xywh
box2d[:,:2] = boxes_3d[:,:2]
box2d[:,2] = boxes_3d[:,3]
box2d[:,3] = boxes_3d[:,4] # 2xywh
#
# xyxy = np.ones_like(box2d)
box2d[:,0] = box2d[:, 0] - box2d[:, 2] / 2
box2d[:,1] = box2d[:, 1] + box2d[:, 3] / 2 # NOTE: Lower left corner
return box2d
def box3d2x0y0wh_2(boxes_3d):
# FCOS3D: front view--> BEV
import numpy as np
n = boxes_3d.shape[0]
box2d = np.zeros((n,4))
# 3dbox --> xywh Lower left corner
box2d[:, 0] = boxes_3d[:, 0]
box2d[:, 1] = boxes_3d[:, 2]
box2d[:, 2] = boxes_3d[:, 4]
box2d[:, 3] = boxes_3d[:, 5] # 2xywh
#
# xyxy = np.ones_like(box2d)
box2d[:,0] = box2d[:, 0] - box2d[:, 2] / 2
box2d[:,1] = box2d[:, 1] + box2d[:, 3] / 2 # NOTE
return box2d
# Drawing according to coordinates
def draw_boxes(pred_boxes_3d, target_boxes_3d, path):
# pred_boxes xywh
import matplotlib.pyplot as plt
import matplotlib.patches as patches
pred_boxes = box3d2x0y0wh(pred_boxes_3d)
target_boxes = box3d2x0y0wh(target_boxes_3d)
fig, ax = plt.subplots()
ax.plot()
# ax.add_patch(patches.Rectangle((1, 1),0.5,0.5,edgecolor = 'blue',facecolor = 'red',fill=True) )
#
for index, coord in enumerate(pred_boxes):
rect = patches.Rectangle((coord[0], coord[1]), coord[2], coord[3],
linewidth=1, edgecolor='r',facecolor='none')
ax.add_patch(rect)
for index, coord in enumerate(target_boxes):
rect = patches.Rectangle((coord[0], coord[1]), coord[2], coord[3],
linewidth=1, edgecolor='g',facecolor='none')
ax.add_patch(rect)
# plt.legend(loc='best',edgecolor='g')
if os.path.exists(path):
os.remove(path)
fig.savefig(path, dpi=90, bbox_inches='tight')
# print(0)
plt.close(fig)
print('Successfully saved')
Quick visualization of point cloud :
def draw_pts(points, save_path, show=False):
''' points: [N,3+c] '''
assert len(points.shape) == 2
if isinstance(points, torch.Tensor):
points = points.cpu().numpy()
points = points.copy()
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# point_range = range(0, points.shape[0], skip) # skip points to prevent crash
point_range = range(0, points.shape[0])
ax.scatter(points[point_range, 0], # x
points[point_range, 1], # y
points[point_range, 2], # z
c=points[point_range, 2], # height data for color
cmap=plt.get_cmap("Spectral"),
marker="x")
ax.axis('auto') # {equal, scaled}
if show:
plt.show()
if save_path is not None:
fig.savefig(save_path, dpi=90, bbox_inches='tight')
plt.close(fig)
边栏推荐
- Xshell connection server changes key login to password login
- Fast development board pinctrl and GPIO subsystem experiment for itop-imx6ull - modify the device tree file
- 118. Yanghui triangle
- Getting started with cinnamon applet
- SSRF漏洞file伪协议之[网鼎杯 2018]Fakebook1
- 干货|总结那些漏洞工具的联动使用
- 内存溢出和内存泄漏的区别
- Flink | multi stream conversion
- 2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array
- move base参数解析及经验总结
猜你喜欢
Talk about pseudo sharing
Dry goods | summarize the linkage use of those vulnerability tools
2022-7-6 初学redis(一)在 Linux 下下载安装并运行 redis
供应链供需预估-[时间序列]
Flask session forged hctf admin
Error lnk2019: unresolved external symbol
高等数学---第八章多元函数微分学1
2022-7-6 beginner redis (I) download, install and run redis under Linux
High end for 8 years, how is Yadi now?
Help tenants
随机推荐
Solve the cache breakdown problem
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
[daily training -- Tencent select 50] 231 Power of 2
Realize the IP address home display function and number home query
mysql 局域网内访问不到的问题
QQ medicine, Tencent ticket
Laravel5 call to undefined function openssl cipher iv length() 报错 PHP7开启OpenSSL扩展失败
Excerpt from "misogyny: female disgust in Japan"
干货|总结那些漏洞工具的联动使用
Esp32 ① compilation environment
2022-7-6 Leetcode 977.有序数组的平方
Navicat运行sql文件导入数据不全或导入失败
Xshell connection server changes key login to password login
室內ROS機器人導航調試記錄(膨脹半徑的選取經驗)
带你掌握三层架构(建议收藏)
2022-7-7 Leetcode 34.在排序数组中查找元素的第一个和最后一个位置
Leecode3. Longest substring without repeated characters
PHP中用下划线开头的变量含义
【面试高频题】难度 2.5/5,简单结合 DFS 的 Trie 模板级运用题
Ogre introduction