精华内容
下载资源
问答
  • Matlab 读取 pcd 文件

    2021-09-30 08:58:25
    Matlab 读取 pcd 文件 使用 matlab 读取 pcd 文件,代码如下: % 读取 pcd 文件,并取出 xyz 坐标 ptCloud = pcread('table.pcd'); % 可视化显示当前 pcd 文件 pcshow(ptCloud); % 将该文件的 xyz 坐标取出 point_...

    Matlab 读取 pcd 文件

    • 使用 matlab 读取 pcd 文件,代码如下:
    % 读取 pcd 文件,并取出 xyz 坐标
    ptCloud = pcread('table.pcd');
    % 可视化显示当前 pcd 文件
    pcshow(ptCloud);
    % 将该文件的 xyz 坐标取出
    point_xyz = ptCloud.Location;
    % 分别取出 x, y, z 坐标,并转化为 double 型(一开始是 single 类型)
    px = double(point_xyz(:,1));
    py = double(point_xyz(:,2));
    pz = double(point_xyz(:,3));
    
    • 用于存储所读取 pcd 文件变量 ptCloud 的数据格式:
      在这里插入图片描述
    • 其中Location 就是点云的 xyz 坐标,这里使用的是 n 行 3 列分别对应 xyz,所以将其取出可以进行后续的处理操作,例如转换为 mat 格式等。
    • 可视化结果显示:
      在这里插入图片描述
    展开全文
  • Python读取pcd点云文件

    千次阅读 2020-06-11 14:27:59
    pcd文件其实就是一个txt文件,里面存储了点云信息,包括点云的数目,点云的类型(是pointxyz还是pointxyzrgb),还有点云的宽度和高度。 这里使用的点云文件存储的点是pointxyzrgb类型,每个点存储了xyz坐标信息,...

    关于Kinect采集点云数据,可以参考https://blog.csdn.net/qq_35565669/article/details/106627639

     

    有两种方法读取pcd文件,使用Python的库open3d读取,或者直接当做txt文件读取,然后python处理数据

    目录

    open3d读取点云

    python直接读取


    open3d读取点云

    import open3d as o3d
    import numpy as np
    def read_pcd(file_path):
    	pcd = o3d.io.read_point_cloud(file_path)
    	print(np.asarray(pcd.points))
    	colors = np.asarray(pcd.colors) * 255
    	points = np.asarray(pcd.points)
    	print(points.shape, colors.shape)
    	return np.concatenate([points, colors], axis=-1)

     注意读取的点云三维坐标和颜色是分开的,分别是points和colors,而且colors中的RGB数据是归一化的,所以要乘以255.

    读取的结果为

    [[  0.49283338   1.870551     3.8150003  106.         112.
      128.        ]
     [  0.50465167   1.8759862    3.8260002  129.         133.
      149.        ]
     [  0.51545358   1.8775003    3.8290002  138.         141.
      155.        ]
     [  0.52380067   1.8701893    3.8140001  142.         144.
      155.        ]
     [  0.53598863   1.8766096    3.8270001  148.         150.
      161.        ]
     [  0.5481053    1.8825409    3.8390002  157.         161.
      172.        ]
     [  0.55548692   1.8722914    3.8180001  156.         160.
      170.        ]
     [  0.57120341   1.8899956    3.8540001  159.         163.
      173.        ]
     [  0.57821184   1.8787676    3.8310001  160.         164.
      174.        ]
     [  0.59047383   1.8847055    3.8430002  161.         165.
      175.        ]]

    python直接读取

    因为Kinect的使用是用C++,而当对点云数据进行处理时,使用Python比较方便。pcd文件其实就是一个txt文件,里面存储了点云信息,包括点云的数目,点云的类型(是pointxyz还是pointxyzrgb),还有点云的宽度和高度。

    这里使用的点云文件存储的点是pointxyzrgb类型,每个点存储了xyz坐标信息,还有argb信息。可以看到下图里三个浮点数就是xyz坐标了,后面的4294901502是一个32位数,argb每个通道对应了8位。要注意的是,透明度a是在RGB前面的,一般是255,所以可以看到argb的二进制数都很大。

     先读取一下点云的大小,然后对每行数据处理,把每行的xyzrgba存进一个列表,最后转为numpy数组就行了。

    def load_pcd_data(file_path):
    	pts = []
    	f = open(file_path, 'r')
    	data = f.readlines()
    
    	f.close()
    	line = data[9]
    	# print line
    	line = line.strip('\n')
    	i = line.split(' ')
    	pts_num = eval(i[-1])
    	for line in data[11:]:
    		line = line.strip('\n')
    		xyzargb = line.split(' ')
    		x, y, z = [eval(i) for i in xyzargb[:3]]
    		argb = xyzargb[-1]
    		# print type(bgra)
    		argb = bin(eval(argb))[2:]
    		a, r, g, b = [int(argb[8 * i:8 * i + 8], 2) for i in range(4)]
    		pts.append([x, y, z, a, r, g, b])
    
    	assert len(pts) == pts_num
    	res = np.zeros((pts_num, len(pts[0])), dtype=np.float)
    	for i in range(pts_num):
    		res[i] = pts[i]
    	# x = np.zeros([np.array(t) for t in pts])
    	return res

    最后读取的效果为

    [[  0.49283338   1.870551     3.8150003  255.         106.
      112.         128.        ]
     [  0.50465167   1.8759862    3.8260002  255.         129.
      133.         149.        ]
     [  0.51545358   1.8775003    3.8290002  255.         138.
      141.         155.        ]
     [  0.52380067   1.8701893    3.8140001  255.         142.
      144.         155.        ]
     [  0.53598863   1.8766096    3.8270001  255.         148.
      150.         161.        ]
     [  0.5481053    1.8825409    3.8390002  255.         157.
      161.         172.        ]
     [  0.55548692   1.8722914    3.8180001  255.         156.
      160.         170.        ]
     [  0.57120341   1.8899956    3.8540001  255.         159.
      163.         173.        ]
     [  0.57821184   1.8787676    3.8310001  255.         160.
      164.         174.        ]
     [  0.59047383   1.8847055    3.8430002  255.         161.
      165.         175.        ]]

    可以看出与第一种方法读取的结果相同,这验证了第二种方法的正确性。

    展开全文
  • c++解析读取pcd点云文件

    千次阅读 2018-12-02 23:23:48
    读取思路:连续读取前11行,获得pcd文件信息头,取得点云存储方式(ascii或者binary)和点云数量、点云格式(XYZ,XYZI....)等关键信息,然后按行依次读取坐标数据即可。 #include <iostream> #include ...

    1.pcd文件格式

    pcl点云库官网pcd格式详解

    2.C++源码 

    读取思路:连续读取前11行,获得pcd文件信息头,取得点云存储方式(ascii或者binary)和点云数量、点云格式(XYZ,XYZI....)等关键信息,然后按行依次读取坐标数据即可。

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <iomanip>
    #include <vector>
    
    struct PointXYZ
    {
    	double x, y, z;
    };
    
    /*
      Author:chd_ayj
      Date:2018-6-8
      Description: read .PCD file
    */
    
    //读取pcd点云文件
    void readPCDfile(const std::string finname, std::vector<PointXYZ>& points, const std::string foutname)
    {
    	std::ifstream fin(finname);
    	if (fin.bad()){
    		std::cout << "打开文件失败!" << std::endl;
    		return;
    	}
    
    	char s[11][1024]; //存储Header
    	int Points_Num; //点数量
    	std::string data_columns_type; //列数: X Y Z
    	std::string data_type; //点坐标存储方式(ascii或者binary)
    
    	std::vector<PointXYZ> cloud;
    	//连续读取Header行数   
    	std::cout << "start to read file header....." << std::endl;
    	std::cout << "file header: " << std::endl;
    	for (int i = 0; i < 11; ++i){
    		fin.getline(s[i], 1024);
    		//std::cout << "第" << i + 1 << "行:" << s[i] << std::endl;
    		std::cout << s[i] << std::endl;
    
    		//FIELDS x y z rgb
    		if (i == 2){
    			std::string s2 = s[2];
    			size_t pos = s2.find("FIELDS");
    			size_t size = s2.size();
    			data_columns_type = s2.substr(pos + 7, size);
    			//std::cout << "data_columns_type:" << data_columns_type << std::endl;
    		}
    
    		//POINTS xxx
    		if (i == 9){
    			std::string s9 = s[9], Points_Str;
    			size_t pos = s9.find("POINTS");
    			size_t size = s9.size();
    			Points_Str = s9.substr(pos + 7, size);
    			Points_Num = atoi(Points_Str.c_str());
    			//std::cout << "Points:" << std::Points_Num << endl;
    		}
    
    		//DATA ascii或者binary
    		if (i == 10){
    			std::string s10 = s[10], DATA_SIZE;
    			size_t pos = s10.find("DATA");
    			size_t size = s10.size();
    			data_type = s10.substr(pos + 5, size);
    			//std::cout << "data_type:" << data_type << std::endl;
    		}
    	}
    	std::cout << std::endl;
    	std::cout << "start to read point ....." << std::endl;
    	PointXYZ p;
    	if ((data_columns_type == "x y z") && (data_type == "ascii")){
    		//读取点坐标记录
    		while (!fin.eof()){
    			fin >> p.x >> p.y >> p.z;
    			if (fin.peek() == EOF){
    				break;
    			}
    			cloud.push_back(p);
    		}
    	}else{
    		std::cout << "data_type = binary, read failed!" << std::endl;
        }
        
    	//点坐标输出txt文本
    	std::cout << "start to write point to txt....." << std::endl;
    	std::ofstream out(foutname);
    	for (size_t i = 0; i < points.size(); ++i)
    	{
    		out << std::setiosflags(std::ios::fixed) << std::setprecision(7)
    			<< points.at(i).x << " "
    			<< points.at(i).y << " "
    			<< points.at(i).z << std::endl;
    	}
    	std::cout << "write point to txt finished!" << std::endl;
    }
    
    int main()
    {
    	std::string finname = "ascii_pcd.pcd";
    	std::string foutame = "ascii_pcd.txt";
    	std::vector<PointXYZ> points;
    	readPCDfile(finname, points, foutame);
    
    	system("pause");
    	return 0;
    }

    2.运行结果:

    读取pcd文件信息头运行结果

    3.总结

    1. string中的find()函数,功能:查找第一次出现的目标字符串,如果存在则返回查找到的第一个字符的索引,否则返回-1。
    2. string中的substr(pos, n)函数,功能:返回一个string,包含pos位置开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s)。
    3. string s.c_str()函数,功能:把string转化成const char*,返回一个指向正规C字符串的指针常量
    4. int atoi(const char *nptr),功能:字符串转换成整型数
    5. 欢迎关注我的公众号。

      微信

       

     

     

    展开全文
  • VS2019+PCL1.11.0库读取pcd文件 为了对pcd文件进行读取和后期处理,第一次接触了PCL库,下面把安装过程中遇到的坑记录一下。 配置前的准备 1、安装VS2019 这里给个链接:VS2019安装教程 2、下载 PCL安装文件和PDB...

    VS2019+PCL1.11.0库读取pcd文件

    为了对pcd文件进行读取和后期处理,第一次接触了PCL库,下面把安装过程中遇到的坑记录一下。

    配置前的准备

    1、安装VS2019 这里给个链接:VS2019安装教程


    2、下载 PCL安装文件和PDB后期调试用的文件 Github链接
    下载页面
    这里点击第一个和第二个,进行下载。上面的是PCL库的安装包,下面是PDB调试相关文件。

    至此准备工作结束。

    配置过程

    1、双击PCL的安装包,选择一个位置安装(不一定要c盘)。在这里插入图片描述
    在这里选择第二个选项,点击下一步,然后一直到完成。
    由于我安装在E盘,所以安装完成后文件夹如图所示:
    在这里插入图片描述
    2、配置系统的环境变量
    在系统环境变量中的Path中加入下列路径。(这里C盘下的OpenNI是在安装PCL下自动下载的)
    在这里插入图片描述

    3、开始在VS中配置PCL环境

    在vs中新建一个空的工程
    在这里插入图片描述
    建好后,在源文件单机右键,新建一个.cpp文件。

    然后在项目上单击右键,找到属性。
    在这里插入图片描述
    在VC++目录下分别对包含目录和库目录进行配置
    在这里插入图片描述
    包含目录配置如下:
    E:\PCL1.11.0\3rdParty\VTK\include\vtk-8.2
    E:\PCL1.11.0\include\pcl-1.10
    E:\PCL1.11.0\3rdParty\Eigen\eigen3
    E:\PCL1.11.0\3rdParty\Boost\include\boost-1_73
    E:\PCL1.11.0\3rdParty\FLANN\include
    E:\PCL1.11.0\3rdParty\Qhull\include
    C:\Program Files\OpenNI2\Include

    包含库目录的配置如下:
    C:\Program Files\OpenNI2\Lib
    E:\PCL1.11.0\3rdParty\Qhull\lib
    E:\PCL1.11.0\3rdParty\FLANN\lib
    E:\PCL1.11.0\3rdParty\Boost\lib
    E:\PCL1.11.0\lib
    E:\PCL1.11.0\3rdParty\VTK\lib

    接着把SDL检查改成否
    在这里插入图片描述

    接下来就是最关键的一步了,在编译器中输入导入LIB
    在这里插入图片描述
    这个地方有个坑!
    在lib中,他把Release 和debug中的库都放在一起了,如果不针对自己工程的Debug和Release属性来配置,包含那些头文件不会报错,能够正常编译,但是在Loadpcd文件的时候会异常中断。

    所以要把库文件里面的Release和Debug两个分开

    1>Debug模式
    OpenNI2.lib
    vtkChartsCore-8.2-gd.lib
    vtkCommonColor-8.2-gd.lib
    vtkCommonComputationalGeometry-8.2-gd.lib
    vtkCommonCore-8.2-gd.lib
    vtkCommonDataModel-8.2-gd.lib
    vtkCommonExecutionModel-8.2-gd.lib
    vtkCommonMath-8.2-gd.lib
    vtkCommonMisc-8.2-gd.lib
    vtkCommonSystem-8.2-gd.lib
    vtkCommonTransforms-8.2-gd.lib
    vtkDICOMParser-8.2-gd.lib
    vtkDomainsChemistry-8.2-gd.lib
    vtkDomainsChemistryOpenGL2-8.2-gd.lib
    vtkdoubleconversion-8.2-gd.lib
    vtkexodusII-8.2-gd.lib
    vtkexpat-8.2-gd.lib
    vtkFiltersAMR-8.2-gd.lib
    vtkFiltersCore-8.2-gd.lib
    vtkFiltersExtraction-8.2-gd.lib
    vtkFiltersFlowPaths-8.2-gd.lib
    vtkFiltersGeneral-8.2-gd.lib
    vtkFiltersGeneric-8.2-gd.lib
    vtkFiltersGeometry-8.2-gd.lib
    vtkFiltersHybrid-8.2-gd.lib
    vtkFiltersHyperTree-8.2-gd.lib
    vtkFiltersImaging-8.2-gd.lib
    vtkFiltersModeling-8.2-gd.lib
    vtkFiltersParallel-8.2-gd.lib
    vtkFiltersParallelImaging-8.2-gd.lib
    vtkFiltersPoints-8.2-gd.lib
    vtkFiltersProgrammable-8.2-gd.lib
    vtkFiltersSelection-8.2-gd.lib
    vtkFiltersSMP-8.2-gd.lib
    vtkFiltersSources-8.2-gd.lib
    vtkFiltersStatistics-8.2-gd.lib
    vtkFiltersTexture-8.2-gd.lib
    vtkFiltersTopology-8.2-gd.lib
    vtkFiltersVerdict-8.2-gd.lib
    vtkfreetype-8.2-gd.lib
    vtkGeovisCore-8.2-gd.lib
    vtkgl2ps-8.2-gd.lib
    vtkglew-8.2-gd.lib
    vtkGUISupportMFC-8.2-gd.lib
    vtkhdf5-8.2-gd.lib
    vtkhdf5_hl-8.2-gd.lib
    vtkImagingColor-8.2-gd.lib
    vtkImagingColor-8.2.lib
    vtkImagingCore-8.2-gd.lib
    vtkImagingCore-8.2.lib
    vtkImagingFourier-8.2-gd.lib
    vtkImagingFourier-8.2.lib
    vtkImagingGeneral-8.2-gd.lib
    vtkImagingGeneral-8.2.lib
    vtkImagingHybrid-8.2-gd.lib
    vtkImagingHybrid-8.2.lib
    vtkImagingMath-8.2-gd.lib
    vtkImagingMath-8.2.lib
    vtkImagingMorphological-8.2-gd.lib
    vtkImagingMorphological-8.2.lib
    vtkImagingSources-8.2-gd.lib
    vtkImagingSources-8.2.lib
    vtkImagingStatistics-8.2-gd.lib
    vtkImagingStatistics-8.2.lib
    vtkImagingStencil-8.2-gd.lib
    vtkImagingStencil-8.2.lib
    vtkInfovisCore-8.2-gd.lib
    vtkInfovisLayout-8.2-gd.lib
    vtkInteractionImage-8.2-gd.lib
    vtkInteractionStyle-8.2-gd.lib
    vtkInteractionWidgets-8.2-gd.lib
    vtkIOAMR-8.2-gd.lib
    vtkIOAsynchronous-8.2-gd.lib
    vtkIOCityGML-8.2-gd.lib
    vtkIOCore-8.2-gd.lib
    vtkIOEnSight-8.2-gd.lib
    vtkIOExodus-8.2-gd.lib
    vtkIOExport-8.2-gd.lib
    vtkIOExportOpenGL2-8.2-gd.lib
    vtkIOExportPDF-8.2-gd.lib
    vtkIOGeometry-8.2-gd.lib
    vtkIOImage-8.2-gd.lib
    vtkIOImport-8.2-gd.lib
    vtkIOInfovis-8.2-gd.lib
    vtkIOLegacy-8.2-gd.lib
    vtkIOLSDyna-8.2-gd.lib
    vtkIOMINC-8.2-gd.lib
    vtkIOMovie-8.2-gd.lib
    vtkIONetCDF-8.2-gd.lib
    vtkIOParallel-8.2-gd.lib
    vtkIOParallelXML-8.2-gd.lib
    vtkIOPLY-8.2-gd.lib
    vtkIOSegY-8.2-gd.lib
    vtkIOSQL-8.2-gd.lib
    vtkIOTecplotTable-8.2-gd.lib
    vtkIOVeraOut-8.2-gd.lib
    vtkIOVideo-8.2-gd.lib
    vtkIOXML-8.2-gd.lib
    vtkIOXMLParser-8.2-gd.lib
    vtkjpeg-8.2-gd.lib
    vtkjsoncpp-8.2-gd.lib
    vtklibharu-8.2-gd.lib
    vtklibxml2-8.2-gd.lib
    vtklz4-8.2-gd.lib
    vtklzma-8.2-gd.lib
    vtkmetaio-8.2-gd.lib
    vtkNetCDF-8.2-gd.lib
    vtkogg-8.2-gd.lib
    vtkParallelCore-8.2-gd.lib
    vtkpng-8.2-gd.lib
    vtkproj-8.2-gd.lib
    vtkpugixml-8.2-gd.lib
    vtkRenderingAnnotation-8.2-gd.lib
    vtkRenderingContext2D-8.2-gd.lib
    vtkRenderingContextOpenGL2-8.2-gd.lib
    vtkRenderingCore-8.2-gd.lib
    vtkRenderingExternal-8.2-gd.lib
    vtkRenderingFreeType-8.2-gd.lib
    vtkRenderingGL2PSOpenGL2-8.2-gd.lib
    vtkRenderingImage-8.2-gd.lib
    vtkRenderingLabel-8.2-gd.lib
    vtkRenderingLOD-8.2-gd.lib
    vtkRenderingOpenGL2-8.2-gd.lib
    vtkRenderingVolume-8.2-gd.lib
    vtkRenderingVolumeOpenGL2-8.2-gd.lib
    vtksqlite-8.2-gd.lib
    vtksys-8.2-gd.lib
    vtktheora-8.2-gd.lib
    vtktiff-8.2-gd.lib
    vtkverdict-8.2-gd.lib
    vtkViewsContext2D-8.2-gd.lib
    vtkViewsCore-8.2-gd.lib
    vtkViewsInfovis-8.2-gd.lib
    vtkzlib-8.2-gd.lib
    pcl_commond.lib
    pcl_featuresd.lib
    pcl_filtersd.lib
    pcl_iod.lib
    pcl_io_plyd.lib
    pcl_kdtreed.lib
    pcl_keypointsd.lib
    pcl_mld.lib
    pcl_octreed.lib
    pcl_outofcored.lib
    pcl_peopled.lib
    pcl_recognitiond.lib
    pcl_registrationd.lib
    pcl_sample_consensusd.lib
    pcl_searchd.lib
    pcl_segmentationd.lib
    pcl_stereod.lib
    pcl_surfaced.lib
    pcl_trackingd.lib
    pcl_visualizationd.lib

    这里的库可以在cmd中用命令行打出来 csdn里面有很多读取文件,并且按照奇偶分为两个文件。(分别是release文件和debug文件)

    2>Release 模式

    OpenNI2.lib
    vtkChartsCore-8.2.lib
    vtkCommonColor-8.2.lib
    vtkCommonComputationalGeometry-8.2.lib
    vtkCommonCore-8.2.lib
    vtkCommonDataModel-8.2.lib
    vtkCommonExecutionModel-8.2.lib
    vtkCommonMath-8.2.lib
    vtkCommonMisc-8.2.lib
    vtkCommonSystem-8.2.lib
    vtkCommonTransforms-8.2.lib
    vtkDICOMParser-8.2.lib
    vtkDomainsChemistry-8.2.lib
    vtkDomainsChemistryOpenGL2-8.2.lib
    vtkdoubleconversion-8.2.lib
    vtkexodusII-8.2.lib
    vtkexpat-8.2.lib
    vtkFiltersAMR-8.2.lib
    vtkFiltersCore-8.2.lib
    vtkFiltersExtraction-8.2.lib
    vtkFiltersFlowPaths-8.2.lib
    vtkFiltersGeneral-8.2.lib
    vtkFiltersGeneric-8.2.lib
    vtkFiltersGeometry-8.2.lib
    vtkFiltersHybrid-8.2.lib
    vtkFiltersHyperTree-8.2.lib
    vtkFiltersImaging-8.2.lib
    vtkFiltersModeling-8.2.lib
    vtkFiltersParallel-8.2.lib
    vtkFiltersParallelImaging-8.2.lib
    vtkFiltersPoints-8.2.lib
    vtkFiltersProgrammable-8.2.lib
    vtkFiltersSelection-8.2.lib
    vtkFiltersSMP-8.2.lib
    vtkFiltersSources-8.2.lib
    vtkFiltersStatistics-8.2.lib
    vtkFiltersTexture-8.2.lib
    vtkFiltersTopology-8.2.lib
    vtkFiltersVerdict-8.2.lib
    vtkfreetype-8.2.lib
    vtkGeovisCore-8.2.lib
    vtkgl2ps-8.2.lib
    vtkglew-8.2.lib
    vtkGUISupportMFC-8.2.lib
    vtkhdf5-8.2.lib
    vtkhdf5_hl-8.2.lib
    vtkImagingColor-8.2.lib
    vtkImagingCore-8.2.lib
    vtkImagingFourier-8.2.lib
    vtkImagingGeneral-8.2.lib
    vtkImagingHybrid-8.2.lib
    vtkImagingMath-8.2.lib
    vtkImagingMorphological-8.2.lib
    vtkImagingSources-8.2.lib
    vtkImagingStatistics-8.2.lib
    vtkImagingStencil-8.2.lib
    vtkInfovisCore-8.2.lib
    vtkInfovisLayout-8.2.lib
    vtkInteractionImage-8.2.lib
    vtkInteractionStyle-8.2.lib
    vtkInteractionWidgets-8.2.lib
    vtkIOAMR-8.2.lib
    vtkIOAsynchronous-8.2.lib
    vtkIOCityGML-8.2.lib
    vtkIOCore-8.2.lib
    vtkIOEnSight-8.2.lib
    vtkIOExodus-8.2.lib
    vtkIOExport-8.2.lib
    vtkIOExportOpenGL2-8.2.lib
    vtkIOExportPDF-8.2.lib
    vtkIOGeometry-8.2.lib
    vtkIOImage-8.2.lib
    vtkIOImport-8.2.lib
    vtkIOInfovis-8.2.lib
    vtkIOLegacy-8.2.lib
    vtkIOLSDyna-8.2.lib
    vtkIOMINC-8.2.lib
    vtkIOMovie-8.2.lib
    vtkIONetCDF-8.2.lib
    vtkIOParallel-8.2.lib
    vtkIOParallelXML-8.2.lib
    vtkIOPLY-8.2.lib
    vtkIOSegY-8.2.lib
    vtkIOSQL-8.2.lib
    vtkIOTecplotTable-8.2.lib
    vtkIOVeraOut-8.2.lib
    vtkIOVideo-8.2.lib
    vtkIOXML-8.2.lib
    vtkIOXMLParser-8.2.lib
    vtkjpeg-8.2.lib
    vtkjsoncpp-8.2.lib
    vtklibharu-8.2.lib
    vtklibxml2-8.2.lib
    vtklz4-8.2.lib
    vtklzma-8.2.lib
    vtkmetaio-8.2.lib
    vtkNetCDF-8.2.lib
    vtkogg-8.2.lib
    vtkParallelCore-8.2.lib
    vtkpng-8.2.lib
    vtkproj-8.2.lib
    vtkpugixml-8.2.lib
    vtkRenderingAnnotation-8.2.lib
    vtkRenderingContext2D-8.2.lib
    vtkRenderingContextOpenGL2-8.2.lib
    vtkRenderingCore-8.2.lib
    vtkRenderingExternal-8.2.lib
    vtkRenderingFreeType-8.2.lib
    vtkRenderingGL2PSOpenGL2-8.2.lib
    vtkRenderingImage-8.2.lib
    vtkRenderingLabel-8.2.lib
    vtkRenderingLOD-8.2.lib
    vtkRenderingOpenGL2-8.2.lib
    vtkRenderingVolume-8.2.lib
    vtkRenderingVolumeOpenGL2-8.2.lib
    vtksqlite-8.2.lib
    vtksys-8.2.lib
    vtktheora-8.2.lib
    vtktiff-8.2.lib
    vtkverdict-8.2.lib
    vtkViewsContext2D-8.2.lib
    vtkViewsCore-8.2.lib
    vtkViewsInfovis-8.2.lib
    vtkzlib-8.2.lib
    pcl_common.lib
    pcl_features.lib
    pcl_filters.lib
    pcl_io.lib
    pcl_io_ply.lib
    pcl_kdtree.lib
    pcl_keypoints.lib
    pcl_ml.lib
    pcl_octree.lib
    pcl_outofcore.lib
    pcl_people.lib
    pcl_recognition.lib
    pcl_registration.lib
    pcl_sample_consensus.lib
    pcl_search.lib
    pcl_segmentation.lib
    pcl_stereo.lib
    pcl_surface.lib
    pcl_tracking.lib
    pcl_visualization.lib

    这两个模式一定要分开配置!
    添加预处理器选项
    在这里插入图片描述

    _CRT_SECURE_NO_WARNINGS
    BOOST_ALL_NO_LIB
    BOOST_USE_WINDOWS_H
    NOMINMAX
    _SCL_SECURE_NO_WARNINGS
    _SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING
    

    这里左上角记得选所有配置!

    配置完成后,将我们之前下载的第二个包,就是PDB的那个包解压到/PCL1.11.0/bin文件夹下,就全部完成了。

    4、读取pcd文件验证环境。
    在这里插入图片描述
    PCD文件自己选一个就好了,附上代码:

    #include<iostream>
    #include<pcl/io/pcd_io.h>
    #include<pcl/point_types.h>
    #include <pcl/visualization/cloud_viewer.h>
    
    void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)    //设置背景颜色
    {
    	viewer.setBackgroundColor(0, 0, 0);
    }
    
    
    
    int main(int argc, char** argv)
    {
    	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    
    	//
    	//*打开点云文件
    	//if (pcl::io::loadPCDFile<pcl::PointXYZ>("C://Users//Administrator//Desktop//test1//Project2//rabbit.pcd", *cloud) == -1)  
    	if (pcl::io::loadPCDFile<pcl::PointXYZ>("C://125.pcd", *cloud) == -1)
    		//根据自己pcd文件的路径进行添加
    	{
    		PCL_ERROR("Couldn't read file rabbit.pcd\n");
    		return(-1);
    	}
    	std::cout << cloud->points.size() << std::endl;   //points.size() 表示数据的大小也就是说点云文件中多少个点
    	pcl::visualization::CloudViewer viewer("cloud viewer");  //showCloud 函数是同步的,在此处等待直到渲染显示为止
    	viewer.showCloud(cloud);    //该注册函数在可视化时只调用一次
    
    	viewer.runOnVisualizationThreadOnce(viewerOneOff);   //该注册函数在渲染输出是每次都调用
    
    	while (!viewer.wasStopped())
    	{
    
    	}
    	system("pause");
    
    	return 0;
    }
    

    这里记得自己改图片路径。

    参考博客

    知乎-解决PCD文件导入异常中断

    CSDN-能够成功安装环境到,但是无法导入PCD文件

    展开全文
  • C#解析读取pcd文件

    2021-08-26 11:45:52
    C#解析pcd点云数据前言代码生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLow...
  • ROS中读取pcd点云数据并在RVIZ中显示

    千次阅读 2019-11-26 16:53:24
    ROS中读取pcd点云文件并在显示 我的环境:ubuntu14+ros indigo 1.ros下创建一个功能包(read_pcd) 在catkin_ws下创建一个名为read_pcd的功能包; catkin_create_pkg read_pcd pcd_conversions pcl_ros roscpp ...
  • PCL:读取PCD模型并显示

    千次阅读 2020-01-12 20:48:45
    win10 x64 vs2013 PCL1.8.0 #include <iostream>... //PCL的PCD格式文件的输入输出头文件 #include <pcl/point_types.h> //PCL对各种格式的点的支持头文件 #include <pcl/visualizati...
  • save_view_point和load_view_...最后显示变换后的视角下的pcd点云。 import open3d as o3d import os import numpy as np import time def save_view_point(pcd, filename): vis = o3d.visualization.Visualizer
  • 通过将pcd文件打开并存储到对象PointCloud中再进行处理,由于本例中使用的贪婪投影三角化算法输入必须为有向点云,所以需要使用PCL中的法线估计方法预先估计出数据中每个点的法线。
  • ROS中使用rviz读取pcd点云文件创建功能包修改cmakelists.txt和package.xml编译功能包Rviz查看pcd报错信息error 本质就是在工作空间下编译一个功能包实现功能。 创建功能包 打开之前创建好的工作空间的src目录下,...
  • pcd格式点云数据的读取和可视化.
  • 读取.pcd文件的pcl代码

    2018-08-15 15:29:22
    代码可以读取.pcd文件,没有传CMakeLists.txt文件,用的时候用cmake编译即可使用
  • 1. 创建功能包 catkin_init 之类的代码 2. src 源文件如下 : #include <ros/ros.h> #include <pcl/point_types.h> #include <pcl_conversions//pcl_...pcl/io/pcd_io.h> #include <iostream>
  • octave读取pcd文件脚本

    2020-03-28 20:22:50
    读取pcd文件。 pc=pcread('test.pcd'); plot3(pc.data.x, pc.data.y, pc.data.z, 'b.');
  • python2,python3读取点云pcd,点云pcd转numpy.ndarray 不依赖ROS环境
  • 读取PCD文件

    千次阅读 2017-07-21 08:58:40
    #include <pcl/io/pcd_io.h> #include #include "cv.h" #include using namespace std; int main (int argc, char** argv){ typedef pcl::PointXYZRGBA PointT; pcl::PointCloud<PointT>::Ptr cloud (new pcl::...
  • 读取PCD文件的XYZ与RGB信息

    千次阅读 2019-06-26 22:07:38
    读取pcl::PointXYZRGB中的RGB信息: pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGB>); unpack rgb into r/g/b: (1) int r = cloud->points[i].r; ...
  • .pcd文件为保存点云数据的文件格式,在三维重建的PCL库中十分常见,若想进一步了解PCL点云库可移步:https://blog.csdn.net/u013019296/article/details/78727890 ##代码段 // An highlighted block # !/usr/bin/...
  • 环境: Ubuntu16.04 ROS kinetic ...catkin_create_pkg read_pcd pcl_conversions pcl_ros roscpp sensor_msgs 进入到功能包的src文件夹下面新建.cpp文件read_pcd.cpp #include<ros/ros.h> #inclu
  • 读取pcd文件 c++

    千次阅读 2017-08-14 11:04:42
    printf("Loaded %d data points from PCD\n", cloud->width * cloud->height); for (size_t i = 0; i < cloud->points.size (); i+=10000) printf("%8.5f %8.5f %8.5f %5d %5d %5d %5d\n", cloud->points[i].x, ...
  • PCL读取PCD文件的数据

    2019-09-22 18:49:25
    1.pcd文件——rabbit.pcd 链接:... 新建项目pcl rabbit.pcd 和pcl.cpp在同一目录下 2.读取文件 (1)显示数据 #include<iostream> #include<pcl/io/pcd_io.h&g...
  • pcl 读取pcd点云文件 显示点云图像

    千次阅读 2019-01-08 21:45:39
    以下是源代码,使用时记得更改pcd文件名 ////////////////////////////////////////////////////// #include &lt;pcl/visualization/cloud_viewer.h&gt; #include &lt;iostream&gt; #include &...
  • python读取pcd文件写入txt

    千次阅读 2018-12-04 17:04:07
    参考:... 基于pcl库读取pcd点云数据写入txt中 pcd数据为binary格式(ascii格式没有测试) #!/usr/bin/python # -*- coding: UTF-8 -*- import pcl filename = './1542614507.19401...
  • PCL教程指南-读取PCD文件,写入PCD文件,合并点云 一.读取PCD文件 读取PCD应用pcl::io::loadPCDFile<pcl::PointT>(pcd文件,点云对象)函数,针对官方文档代码进行注释解释 #include <iostream> #include...
  • 代码中将viewer.setCameraPosition(0, 0, -3.0, 0, -1, 0);viewer.addCoordinateSystem(0.3);... //PCL的PCD格式文件的输入输出头文件 #include <pcl/point_types.h> //PCL对各种格式的点的支持头文件 #inc
  • 可以在matlab里运行的对点云处理的一些算法,包括读取pcd文件,保存pcd文件和pcd点云的可视化
  • vs读取pcd文件

    千次阅读 2017-04-05 22:15:33
    #include #include //标准C++库中的输入...#include //pcd 读写类相关的头文件。 #include #include //PCL中支持的点类型头文件。 using namespace std; int user_data; void viewerOneOff(pcl::visualization:
  • PCL读取PCD/PLY文件

    2020-07-04 18:41:10
    pcl/io/pcd_io.h>//PCL的PCD格式文件的输入输出头文件 #include <pcl/io/ply_io.h>//PCL的PLY格式文件的输入输出头文件 #include <pcl/point_types.h>//PCL中支持的点类型文件 程序 //创建共享...
  • PCL中读取pcd点云数据的两种方法

    万次阅读 2017-06-27 15:55:57
    PCL中读取pcd点云数据的两种方法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,501
精华内容 1,400
关键字:

读取pcd