C# 读取pcd点云文件数据

news2024/11/16 0:04:21

        pcd文件有ascii 和二进制格式,ascii可以直接记事本打开,C#可以一行行读。但二进制格式的打开是乱码,如果尝试程序中读取,对比下看了数据也对不上。

      这里可以使用pcl里的函数来读取pcd,无论二进制或ascii都可以正确读取,但pcl是C++写的,不太方便使用。我写了个C#的dll文件Q_PclCs.dll,此dll基于pcl 1.13.1版本开发,可以通过引用此dll文件来读取pcd文件,而不需要额外配置其他东西。

     

     文件下载地址

链接:https://pan.baidu.com/s/1dgXmd9VTf3G4ux__-fhtGg 
提取码:vx8u

 使用说明 将这些dll文件都放到你程序的可执行文件目录下,引用Q_PclCs.dll

读取方式

命名空间 Q_PclCs

using Q_PclCs;

PcdReader pcdReader = new PcdReader();

先读点云长度length

int length=pcdReader.GetLength(ofd.FileName);

准备数组存储

                double[] x = new double[length];
                double[] y= new double[length];
                double[] z=new double[length];
                pcdReader.PcdReaderFast(ref x, ref y, ref z);

这样就读出来了

测试程序,可以用vtk展示读出来的图,简单展示下

 测试代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Kitware.VTK;
using Q_PclCs;

namespace testCsGetPcd
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if(ofd.ShowDialog() == DialogResult.OK)
            {
                PcdReader pcdReader = new PcdReader();
                int length=pcdReader.GetLength(ofd.FileName);
                double[] x = new double[length];
                double[] y= new double[length];
                double[] z=new double[length];
                pcdReader.PcdReaderFast(ref x, ref y, ref z);

                vtkPoints points = new vtkPoints();

                for (int i = 1; i < length; i++)
                {
                    points.InsertPoint(i, x[i], y[i], z[i]);
                }
                vtkPolyData polydata = vtkPolyData.New();
                polydata.SetPoints(points);

                vtkVertexGlyphFilter glyphFilter = vtkVertexGlyphFilter.New();
                glyphFilter.SetInputConnection(polydata.GetProducerPort());

                vtkPolyDataMapper mapper = vtkPolyDataMapper.New();
                mapper.SetInputConnection(glyphFilter.GetOutputPort());

                vtkActor actor = vtkActor.New();
                actor.SetMapper(mapper);

                vtkRenderer render = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();
              
                render.AddActor(actor);
                //render.AddActor(scalarBar);
                //render.SetViewport(0.0, 0.0, 1, 1);
                render.ResetCamera();
                this.Refresh();

            }
        }
    }
}

 

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

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

相关文章

Fortinet数据中心防火墙及服务ROI超300%,Forrester TEI研究发布

近日&#xff0c;专注网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;联合全球知名分析机构Forrester发布总体经济影响独立分析报告&#xff0c;详细阐述了在企业数据中心部署 FortiGate 下一代防火墙&#xff08;NGFW&#xff09…

web集群学习:搭建 LNMP应用环境

目录 LNMP的介绍&#xff1a; LNMP组合工作流程&#xff1a; FastCGI介绍&#xff1a; 1、什么是 CGI 2、什么是 FastCGI 配置LNMP 1、部署LNMP环境 2、配置LNMP环境 LNMP的介绍&#xff1a; 随着 Nginx Web 服务的逐渐流行&#xff0c;又岀现了新的 Web 服务环境组合—…

Ae 效果:CC WarpoMatic

过渡/CC WarpoMatic Transition/CC WarpoMatic CC WarpoMatic&#xff08;CC 自动扭曲&#xff09;主要用于创建动态的扭曲和弯曲过渡效果&#xff0c;可以在两个图层之间生成独特的过渡动画。 ‍ 这个效果允许用户根据特定的图层特性&#xff08;如亮度、对比度差异、亮度差异…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)九:自定义组件封装下

一、本章内容 续上一张,本章实现一些自定义组件的封装,包括文件上传组件封装、级联选择组件封装、富文本组件封装等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 基于VUE3+Layui从头搭建通用后台管

什么是大数据测试?有哪些类型?应该怎么测?

随着目前世界上各个国家使用大数据应用程序或应用大数据技术场景的数量呈指数增长&#xff0c;相应的&#xff0c;对于测试大数据应用时所需的知识与大数据测试工程师的需求也在同步增加。 针对大数据测试的相关技术已慢慢成为当下软件测试人员需要了解和掌握的一门通用技术。…

vue 安装并配置vuex

1.安装vuex命令:npm i vuex3.6.2 2.全局配置 在main文件里边导入-安装-挂载 main.js页面配置的 import Vue from vue import App from ./App.vue import Vuex from vuex//导入 Vue.use(Vuex)//安装插件 // 创建store对象 const store new Vuex.Store({ }) // 挂载到vue对象上…

ClickHouse AST is too big 报错问题处理记录

ClickHouse AST is too big 报错问题处理记录 问题描述问题分析解决方案1、修改系统配置2、修改业务逻辑 问题描述 项目中统计报表的查询出现 AST is too big 问题&#xff0c;报错信息如下&#xff1a; 问题分析 报错信息显示 AST is too big。 AST 表示查询语法树中的最大…

7-3 求给定精度的简单交错序列部分和

分数 15 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 本题要求编写程序&#xff0c;计算序列部分和 1 - 1/4 1/7 - 1/10 ... 直到最后一项的绝对值不大于给定精度eps。 输入格式: 输入在一行中给出一个正实数eps。 输出格式: 在一行中按照“sum S”的格式输出…

2023年排行前五的大规模语言模型(LLM)

2023年排行前五的大规模语言模型(LLM) 截至2023年&#xff0c;人工智能正在风靡全球。它已经成为热门的讨论话题&#xff0c;吸引了数百万人的关注&#xff0c;不仅限于技术专家和研究人员&#xff0c;还包括来自不同背景的个人。人们对人工智能热情高涨的原因之一是其在人类多…

新版本Qt Creator无法提示错误、不报红

问题 更新新版本Qt Creator后无法实时提示错误&#xff0c;在开发中非常难受 如图&#xff0c;此时w后面少了;Qt Creator却只有红色横线标识&#xff0c;没有具体的错误。 解决方法 首先要知道&#xff0c;提供这个错误显示功能是ClangCodeModel插件提供的&#xff0c;因此…

Kafka-eagle监控平台

Kafka-Eagle简介 在开发工作中&#xff0c;当业务不复杂时&#xff0c;可以使用Kafka命令来进行一些集群的管理工作。但如果业务变得复杂&#xff0c;例如&#xff1a;需要增加group、topic分区&#xff0c;此时&#xff0c;再使用命令行就感觉很不方便&#xff0c;此时&#x…

FPGA_学习_15_IP核_VIO

前一篇博客我们提到在线调试的时候&#xff0c; 可执行文件只要烧进板子&#xff0c;程序它就会自己跑起来&#xff0c;不会等你点 这个按钮&#xff0c;它才开始跑。我们测试的模块中&#xff0c;里面可能有几个我们关心的信号&#xff0c;它会在程序刚运行很短的时间内发生状…

matlab初

matlab语言方式与c有很大的相似之处&#xff0c;此篇记录一下自己初步学习matlab的一些过程和代码 学习matlab主要是从b站上&#xff0c;也从matlab官网去学习了一下相关感兴趣的函数 版本是之前下好的R2022b 1.变量命名&#xff0c;这与c语言变量命名要求的规则非常相似 简单…

Pycharm与Anaconda Python的开发环境搭建

目录 一&#xff1a;下载 二&#xff1a;安装python 三&#xff1a;设置Pycharm 一&#xff1a;下载 下载Anaconda&#xff1a; Anaconda | The World’s Most Popular Data Science Platform 安装好以后&#xff0c;设置一下环境变量&#xff1a; 打开命令行&#xff0c…

双链表的插入,删除以及遍历

在上一节我们讲解了单链表的头插法和尾插法 http://t.csdn.cn/RixAu 但是单链表无法反向检索&#xff0c;对于某些情景可能造成不便&#xff0c;所以我们今天学习双链表 目录 1.双链表的初始化 2.双链表的插入 3.双链表的删除 4.遍历双链表 1.双链表的初始化 typedef i…

【Git】(一)基本操作

读完本文后&#xff0c;您会了解&#xff1a; 1、如何在本地配置GIT环境&#xff1f; 2、环境配置成功后&#xff0c;如何从远端下载一个已有仓库到本地? 1. 配置全局用户名、邮箱 git config --global user.name "username" git config --global user.email &q…

plt绘画带箭头的xy坐标轴

import matplotlib.pyplot as plt import mpl_toolkits.axisartist as axisartist# 创建画布 fig plt.figure() # 使用axisartist.Subplot方法创建一个绘图区对象ax ax axisartist.Subplot(fig,2,3,1) # 将绘图区对象添加到画布中 fig.add_axes(ax) # 通过set_axisline_style…

varifocal loss(VFL)介绍

文章目录 一、论文链接二、公式理解代码 一、论文链接 https://arxiv.org/pdf/2008.13367.pdf 二、公式理解 简单说明下&#xff0c;这里的IACS是IoU-aware classification score的缩写。VFL原文里面这个target socre也就是q&#xff0c;是一个和IOU有关的软标签。对于挑选出…

华为网络篇 RIP的报文认证-28

难度2复杂度2 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 RIP的认证方式有两种&#xff0c;一种是明文认证&#xff0c;另一个是密文认证。明文认证有一个比较大的缺陷&#xff0c;就是认证的密钥也是明文传输的&#xff0c;这为攻击者…

关于 LLM 和图数据库、知识图谱的那些事

本文整理自 NebulaGraph 布道师 wey 在「夜谈 LLM」主题分享上的演讲&#xff0c;主要包括以下内容&#xff1a; 背景 LLMRAGGraph 知识抽取Text2CypherGraph RAG未来规划 技术背景 LLM 是什么 这里简单、快速地介绍下大语言模型&#xff1a;从 GPT-2 开始&#xff0c;到后…