深度相机xyz点云文件三维坐标和jpg图像文件二维坐标的相互变换函数

深度相机同时拍摄xyz点云文件和jpg图像文件。xyz文件里面包含三维坐标[x,y,z]和jpg图像文件包含二维坐标[x,y],但是不能直接进行变换,需要一定的步骤来推演。
在这里插入图片描述

下面函数是通过box二维框[xmin, ymin, xmax, ymax, _, _ ]去截取xyz文件中对应box里面的点云,返回点云的numpy数组

    def get_point_from_xyz_and_box(self, Image_XYZ_Name, box, p=0.1, Sampling_interval=4):#改进的读取点云的函数,可以节省很多时间# 使用内存映射读取文件with open(Image_XYZ_Name, "rb") as fd:# 计算映射大小和偏移dtype = np.dtype(np.uint16)offset = dtype.itemsize * self.width * self.height * 3  #根据文件格式调整fd.seek(0, 2)  # 移动到文件末尾file_size = fd.tell()assert file_size >= offset, "文件大小不匹配"# 创建内存映射mm = np.memmap(fd, dtype=dtype, mode='r', shape=(self.height, self.width, 3), order="C")# 转换为3D点云,只读取box范围内的xmin, ymin, xmax, ymax, _, _ = boxy_indices = np.arange(ymin, ymax, Sampling_interval, dtype=int)x_indices = np.arange(xmin, xmax, Sampling_interval, dtype=int)# 构建网格索引y_grid, x_grid = np.meshgrid(y_indices, x_indices, indexing='ij')depth_points = mm[y_grid, x_grid].reshape(-1, 3) * p# print('mm',mm) # print(y_grid, x_grid) # 过滤无效点(假设深度值为0表示无效点)valid_points = depth_points[depth_points[:, 2] != 0]return valid_points

下面函数是知道点云中的一个点[x,y,z]来计算出这个点对应的二维坐标[y,x]

 def calculate_box_from_points_and_xyz(self, point, p=0.1):with open(self.XYZ_Name, "rb") as fd:# 计算映射大小和偏移dtype = np.dtype(np.uint16)offset = dtype.itemsize * self.width * self.height * 3  # 根据文件格式调整fd.seek(0, 2)  # 移动到文件末尾file_size = fd.tell()assert file_size >= offset, "文件大小不匹配"# 创建内存映射a = np.memmap(fd, dtype=dtype, mode='r', shape=(self.height, self.width, 3), order="C")# 将所有点的坐标转换为KD树需要的格式,并除以ppoints = np.reshape(a, (-1, 3)) kd_tree = KDTree(points)# 查找最接近的点point_idx = kd_tree.query(point / p)[1]# 将一维索引转换回二维索引matching_indice = np.unravel_index(point_idx, (self.height, self.width))return matching_indice

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyCAT学习——在openEuler22.03中安装MyCAT2(网盘下载版)

准备工作 因为MyCAT 2基于JDK 1.8开发。也需要在虚拟机中安装JDK(JDK官网就能下载,我这提供一个捷径) jdk-8u401-linux-x64.rpmhttps://pan.baidu.com/s/1ywcDsxYOmfZONpmH9oDjfw?pwdrhel下载对应的tar安装包,以及对应的jar包 安装程序包…

九州金榜|孩子厌学要怎么办?

孩子从小学到初中再到高中,孩子出现厌学情绪很正常,但是孩子出现厌学情绪后,就必然会影响到孩子学习成绩,孩子产生厌学情绪的原因有哪些呢?只有找准孩子厌学原因才能去帮助孩子怎样去克服孩子厌学情绪,下面…

day34贪心算法 part03

1005. K 次取反后最大化的数组和 简单 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数…

OSError: [WinError 1455] 页面文件太小,无法完成操作。

[问题描述]:OSError: [WinError 1455] 页面文件太小,无法完成操作。 原因1:线程数太大 方法:改小线程(workers)数。 原因2:虚拟内存太小或为0,调大虚拟内存。 方法:右键…

Vue.js 实用技巧:深入理解 Vue.mixin

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【Linux进程间通信】共享内存

【Linux进程间通信】共享内存 目录 【Linux进程间通信】共享内存system V共享内存共享内存示意图共享内存的数据结构共享内存函数将共享内存挂接到对应的进程将共享内存取消挂接释放共享内存 共享内存的特性共享内存扩展共享内存配合管道进行使用 作者:爱写代码的刚…

用docker部署后端项目

一、搭建局域网 1.1、介绍前后端项目搭建 需要4台服务器,在同一个局域网中 1.2、操作 # 搭建net-ry局域网,用于部署若依项目 net-ry:名字 docker network create net-ry --subnet172.68.0.0/16 --gateway172.68.0.1#查看 docker network ls…

3d模型合并后一片漆黑是什么原因,怎么解决---模大狮模型网

当合并多个3D模型后,发现整个合并后的模型显示为一片漆黑通常是由以下几个可能的原因导致的: 材质设置问题:合并后的模型可能存在材质设置错误,导致模型无法正确显示。检查每个模型的材质属性,确保其正确设置&#xff…

老隋蓝海项目有哪些?能赚钱吗?

在创业的海洋中,每个人都渴望找到那片属于自己的“蓝海”,而“老隋蓝海项目”便是许多人心中的那片未知海域。那么,老隋蓝海项目究竟是指什么?它们又能否成为创业者的新财富之源? 蓝海项目的定义 我们要明白,蓝海项目通常指的是…

【漏洞复现】某厂商明御WEB应用防火墙任意用户登录漏洞

Nx01 产品简介 安恒明御WEB应用防火墙(简称WAF)是杭州安恒信息技术股份有限公司自主研发的一款专业应用安全防护产品,专注于为网站、APP等Web业务系统提供安全防护。 Nx02 漏洞描述 安恒明御WEB应用防火墙report.php文件存在硬编码设置的Con…

yolov7添加spd-conv注意力机制

一、spd-conv是什么? SPD-Conv(Symmetric Positive Definite Convolution)是一种新颖的卷积操作,它主要应用于处理对称正定矩阵(SPD)数据。在传统的卷积神经网络(CNN)中,…

人工智能_大模型013_AIGC生成式模型的增强检索_RAG知识补充检索_补充私域和实时场景知识_关键字检索增强---人工智能工作笔记0149

什么是RAG,RAG的意思就是,如果一套生成式AIGC大模型,你昨天训练了以后,那么今天的知识,还没有给他进行训练,那么回答的时候,他就会遗漏今天的知识,那么我们就可以通过检索的手段,把今天的知识,检索出来,然后补充道prompt中,给这个大模型.让他参考,这样就包含了今天的知识相当于…

CY8C42(1.PSoC4 Pioneer Kit开箱及基本使用)

1.开箱 最近了解到赛普拉斯有一种芯片,属于PSoC系列,与传统MCU不同,有点类似跨界芯片,于是就买来玩玩了,老实说用完还是很特别的,因为我没有用过FPGA,不确定是不是FPGA的开发流程(有…

MySQL的事务与隔离级别

1. 什么是事务? 数据库中的事务是指对数据库执行一批操作,而这些操作最终要么全部执行成功,要么全部失败,不会存在部分成功的情况。这个时候就需要用到事务。 最经典的例子就是转账,你要给朋友小白转 1000 块钱&…

一代传奇宗庆后:把员工宠成上帝

作者:积溪 琥珀酒研社快评: 梅子真是哭了 一代传奇就此陨落 咱们又少了一个良心企业家 2月25日10时30分 娃哈哈集团创始人、董事长宗庆后 在杭州逝世,享年79岁 在过去一个多月的病危期间 他的病房里最显眼的 不是呼吸机、检测仪 而…

智慧城市中的公共服务创新:让城市生活更便捷

目录 一、引言 二、智慧城市公共服务创新的实践 1、智慧交通系统 2、智慧医疗服务 3、智慧教育系统 4、智慧能源管理 三、智慧城市公共服务创新的挑战 四、智慧城市公共服务创新的前景 五、结论 一、引言 随着信息技术的迅猛发展,智慧城市已成为现代城市发…

技术总结: PPT绘图

目录 写在前面参考文档技巧总结PPT中元素的连接立方体调整厚度调整图形中的文本3D 图片调整渐变中的颜色 写在前面 能绘制好一个好看的示意图非常重要, 在科研和工作中好的示意图能精准表达出自己的想法, 减少沟通的成本, 可视化的呈现也可以加强自身对系统的理解, 时间很久后…

分分钟搞定JSON解析

json 库能够解析字符串或文本中的 JSON 内容。 该库将 JSON 解析为 Python 字典或列表,也能将 Python 字典或列表转换为 JSON 字符串。 解析 JSON 如下的 JSON 格式的字符串: json_string {"first_name": "Guido", "last_na…

瑞芯微RK3588 C++部署Yolov8检测和分割模型

最近这一个月在研究国产瑞芯微板子上部署yolov8的检测和分割模型,踩了很多坑,记录一下部署的过程和遇到的一些问题: 1 环境搭建 需要的环境和代码主要包括: (1)rknn-toolkit2-1.5.2:工具链&am…

微服务day04-基于Feign的远程调用

一.Feign的认识 是http客户端,因为使用RestTemplate存在一些问题:代码可读性差,参数配置费事,不够优雅… String url"http://userservice/user/"order.getUserId(); User userrestTemplate.getForObject(url,User.cla…