深视智能线激光3D相机使用踩坑,pcl库安装配置

1.安装pcl库

因为线激光获取的是3D点云信息,所以安装pcl(一个大型的开源点云处理库)库就尤为关键

我不再赘述,直接引入大佬的博客(注意不要安装pcl1.12的,到时候可能会有内存问题导致无法运行)

大佬的链接:推荐跟大佬一样创建一个项目属性表,这样会方便很多Visual Studio+PCL环境配置及各步骤意义简介_pcl环境变量_糊烟乱雨的博客-CSDN博客

2.使用线激光 

先把线激光厂家给的文件进行链接,头文件放到所写的cpp文件目录下即可,链接的教程网上有很多,不再赘述。

运行这个官方程序

或者这个应用时 

会显示出这个界面 

使用线激光扫描一下之后,在信息显示那里会显示当前x,y的间距,这个间距可以通过改变线激光的测量范围来进行改变,。

在代码中使用这个间距来获得扫描出完整的点云数据。

我使用的是示例中的非阻塞有限循环获取数据

	//相机 IP 地址
	SR7IF_ETHERNET_CONFIG SREthernetConFig;
	SREthernetConFig.abyIpAddress[0] = 192;
	SREthernetConFig.abyIpAddress[1] = 168;
	SREthernetConFig.abyIpAddress[2] = 6;
	SREthernetConFig.abyIpAddress[3] = 12;
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud <pcl::PointXYZ>);
	float a = 1.44, b = 0.0;
	//设备 ID
	const int DEVICE_ID = 0;

	//连接相机
	SR7IF_EthernetOpen(DEVICE_ID, &SREthernetConFig);

	//开始批处理---------IO 触发时调用函数 SR7IF_StartIOTriggerMeasure(DEVICE_ID, 20000)
	SR7IF_StartMeasure(DEVICE_ID, 20000);

	//等待数据接收
	SR7IF_Data DataObject = NULL;
	SR7IF_ReceiveData(0, DataObject);

	//获取批处理行数
	int BatchPoint = SR7IF_ProfilePointCount(DEVICE_ID, DataObject);

	//获取轮廓宽度
	int m_DataWidth = SR7IF_ProfileDataWidth(DEVICE_ID, DataObject);
	cout << "轮廓宽度为" << m_DataWidth << endl;
	//获取高度数据
	 //定义高度数据缓存
	int* HeightData = new int[BatchPoint * m_DataWidth];
	cout << "高度数据为" << BatchPoint * m_DataWidth << endl;
	SR7IF_GetProfileData(DEVICE_ID, DataObject, HeightData);
	//获取灰度数据
		//定义灰度数据缓存
	unsigned char* grayData = new unsigned char[BatchPoint * m_DataWidth];
	SR7IF_GetIntensityData(DEVICE_ID, DataObject, grayData);
    //保存点云数据
	for (int i = 0; i < BatchPoint; ++i) {
			pcl::PointXYZ point;
			point.x = a;
			point.y = b;
			point.z = HeightData[i * 1200 + j] * 0.00001;
			cloud->push_back(point);
			a += 0.36;
		}
		b += 0.1;
		a = 1.44;
	}

	//获取编码器数据
   //定义编码器数据缓存
	// int* Encoder = new unsigned int[BatchPoint];
//SR7IF_GetEncoder(DEVICE_ID, DataObject, Encoder);

	/******用户代码******/
	cout << "点云数据点数为" << cloud->size() << endl;
	//创建一个CloudViewer对象
	pcl::visualization::CloudViewer viewer("Cloud Viewer");

	// 显示点云数据
	viewer.showCloud(cloud);
	// 等待用户关闭查看器窗口
	while (!viewer.wasStopped())
	{
		// 在此处添加其他代码
	}

	/********************/

	//内存释放
	delete[] HeightData;
	delete[] grayData;
	//delete[] Encoder;

	//停止批处理
	SR7IF_StopMeasure(DEVICE_ID);

	//关闭设备
	SR7IF_CommClose(DEVICE_ID);

将扫描的点云数据保存为一个对象并且显示出来,a,b分别是x,y轴的间距,z轴的数值就是代码中获取的数组中元素数据,z轴坐标要转化一下,不然数值非常大。这些可以通过使用软件将点云数据保存为一个随便点云格式文件(ply,pcd等等),然后通过代码查看点云中每一个点的坐标信息得到 ,分析一下就可以得到这个结论:x轴都是起始位置在一个固定点,然后累加的,y轴则是经过你设置的线激光一列点数(3000,5000等等)之后再累加。

这样就可以正常的保存并且显示线激光获取的点云数据了。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCL(Point Cloud Library)是一个开源的,主要用于处理三维点云数据。以下是关于PCL安装的简要介绍。 首先,要安装PCL,需要满足以下的系统要求: 1. 操作系统:PCL可以在Windows、Linux和Mac OS X上安装和运行。 2. C++编译器:推荐使用支持C++11标准的编译器,如GCC 4.8及以上版本。 接下来,我们将讨论在不同的操作系统上如何安装PCL: 在Windows上安装PCL: 1. 在PCL的官方网站(https://pointclouds.org/downloads/)上下载PCL的预编译二进制文件。 2. 根据你的操作系统和编译器版本,选择相应的二进制文件进行下载。 3. 安装下载的二进制文件,按照提示进行安装即可。 在Linux上安装PCL: 1. 打开终端,运行以下命令安装PCL依赖:sudo apt-get install libpcl-dev 2. 这将自动安装PCL的所有依赖项,并使其可用于开发。 在Mac OS X上安装PCL: 1. 打开终端,运行以下命令安装Homebrew包管理器:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 2. 在终端中运行以下命令安装PCL:brew install pcl 当安装完成后,你可以使用PCL进行三维点云数据的处理和分析。在编译你的程序时,需要将PCL链接到你的项目中。具体的链接方法可以参考PCL的官方文档或在线资源。 总之,安装PCL需要根据操作系统的不同进行不同的安装步骤。通过遵循相应的安装指南,你可以成功安装使用PCL来处理三维点云数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值