计算在box内点云的数量

obj_names = annotations['name']
num_objects = obj_names.shape[0]
points = self.get_lidar(info)
corners_lidar = box_utils.boxes_to_corners_3d(annotations['gt_boxes_lidar'])
for k in range(num_objects):
	flag = box_utils.in_hull(points[:, 0:3], corners_lidar[k]) # 在box内的点云数量
	num_points_in_gt[k] = flag.sum()

from scipy.spatial import Delaunay
def in_hull(p, hull):
    """
    :param p: (N, K) test points
    :param hull: (M, K) M corners of a box
    :return (N) bool
    """
    try:
        if not isinstance(hull, Delaunay):
            hull = Delaunay(hull)
        flag = hull.find_simplex(p) >= 0
    except scipy.spatial.qhull.QhullError:
        print('Warning: not a hull %s' % str(hull))
        flag = np.zeros(p.shape[0], dtype=np.bool)

    return flag
    
def boxes_to_corners_3d(boxes3d):
    """
        7 -------- 4
       /|         /|
      6 -------- 5 .
      | |        | |
      . 3 -------- 0
      |/         |/
      2 -------- 1
    Args:
        boxes3d:  (N, 7) [x, y, z, dx, dy, dz, heading], (x, y, z) is the box center

    Returns:
    """
    boxes3d, is_numpy = common_utils.check_numpy_to_torch(boxes3d) # [71, 7]

    template = boxes3d.new_tensor(( # [8, 3]
        [1, 1, -1], [1, -1, -1], [-1, -1, -1], [-1, 1, -1],
        [1, 1, 1], [1, -1, 1], [-1, -1, 1], [-1, 1, 1],
    )) / 2

    
    corners3d = boxes3d[:, None, 3:6].repeat(1, 8, 1) * template[None, :, :] # [71, 8, 3]
    corners3d = common_utils.rotate_points_along_z(corners3d.view(-1, 8, 3), boxes3d[:, 6]).view(-1, 8, 3) # [71, 8, 3]
    corners3d += boxes3d[:, None, 0:3]

    return corners3d.numpy() if is_numpy else corners3d

Delaunay

### 如何在 IntelliJ IDEA 中配置 MyBatis 动态 SQL 输出 为了实现 MyBatis 动态 SQL 的打印,可以通过调整日志框架的配置来完成。以下是具体的说明: #### 配置 Log4j 或其他日志框架 MyBatis 支持多种日志框架(如 SLF4J、Log4j 和 Commons Logging)。通过设置日志级别为 `DEBUG`,可以捕获并显示生成SQL 语句。 以下是个基于 Log4j 的示例配置文件内容: ```properties log4j.rootLogger=DEBUG, Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # 设置 MyBatis 日志级别为 DEBUG log4j.logger.org.mybatis=DEBUG log4j.logger.com.example.mapper=DEBUG ``` 上述配置会将 MyBatis 的运行时信息以及生成SQL 显示到控制台中[^1]。 #### 使用 MyBatis Plus 自动化特性 如果项目使用的是 MyBatis Plus,则其内置了些增强功能可以帮助简化开发流程。例如,在 Mapper 方法调用期间自动生成的日志也会包含最终执行的 SQL。 #### 处理特殊字符问题 当遇到类似于 `order` 这样的保留字作为表名的情况时,需注意手动为其加上反引号 `` 来避免语法错误。这通常发生在动态 SQL 场景下,因为 MyBatis 默认不会自动处理这些特殊情况[^3]。 #### 测试环境下的验证 确保测试类中的 SqlSession 已经被正确初始化,并且对应的 Factory Builder 不再参与后续操作之后即可丢弃它[^2]。这样能够减少不必要的资源占用同时保持程序逻辑清晰明了。 ```java // 创建 SqlSessionFactory 实例 () SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader); // 获取 Session 并关闭 builder 变量作用域外的对象引用 try(SqlSession session = factory.openSession()) { OrderMapper mapper = session.getMapper(OrderMapper.class); } ``` 以上代码片段展示了如何安全地管理 SqlSessionFactory 生命周期以防止内存泄漏等问题发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值