- 博客(10)
- 资源 (1)
- 收藏
- 关注
原创 计算点云的二维面积(凹包面积计算、平面旋转)
计算点云面积时,cloud compare采取的策略是将点云网格化,然后计算网格面积。这样构网的情况往往会影响到后续面积的计算精度。这里采取了一种凹包面积计算的策略。主要步骤包括:1、将点云旋转至与z轴相垂直的平面2、计算旋转后点云的凹多边形边界点3、利用cgal库计算凹多边形面积这里采用了cgal中Polygon::area()算法,仅接受二维点输入。#pragma warning(disable : 4996)#include <CGAL/Exact_predicates_inex.
2021-12-03 15:34:43 7630 5
原创 Debug Error: abort() has been called解决办法
今天调试程序的时侯,本来没有问题。后来调试了几次突然跳出“Debug Error: abort() has been called”(下图)经过整理和网上查阅资料发现是读取数据的问题。有时是文件路径的双斜杠。我的代码中有一段是读入“test1.tif”,后面还有一段是输出结果,名称也是“test1.tif”。故原始文件被覆盖了。将输出名称改掉就没问题了。...
2021-08-24 09:29:02 18281 1
原创 将多个c++库文件合并
现在需要将谢师兄的Library和自己配置的pcl1.8、opencv341合并至一个文件夹,并将几个属性表合并。1、由于谢师兄的库中包含pcl内容,他的pcl和我的pcl1.8版本不同,有些函数没有,容易造成调用冲突。如concave_hull这个函数,pcl1.8内有,但是谢师兄的库中没有,同时包含两个库的属性表,可能会报错,找不到concave_hull函数。故采用下图方式找到谢师兄库中pcl的位置,并将其全部删除,这里会自动显示其库的位置。2、将以上内容删除后,可以将之前配置的好几个属性表
2021-06-29 20:34:26 664
原创 CGAL实现点云投影至任意平面
最近在做一个项目,需要将点云投影至任意平面,尝试了网上pcl的投影代码。利用平面法向量总是不能得到正确的结果,于是采用CGAL实现了一下。大致原理是:点云投影到空间中任意平面,实际是点云沿着该点P到目标平面Plane的垂线进行投影。这样问题就变成利用已知点P构造一条垂直于目标平面Plane的直线L,L平行于目标平面的法向量,求直线L 和Plane的交点。代码如下:#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
2021-06-28 20:22:41 1273 2
原创 计算空间中点到直线的距离
最近在做一个项目,已知三维空间中的一个点和构成直线的两个点的三维坐标,需要计算空间中点到直线的距离。网上查了查,pcl有自带的计算函数,pcl::sqrPointToLineDistance如下,需要提供…方向?好吧,反正我是不会搞。后来又在网上查了查资料,发现可以用海伦公式,通过已知三角形三个边的长度计算三角形的面积!问题就非常简单了。这样就可以先计算三个点之间的距离,作为三角形三个边的长度。然后利用三角形的面积公式:S = (h*a)/2计算空间中点到直线的距离啦。感觉比网上求叉积的方式要
2021-06-16 12:55:27 4025 1
原创 VS2017属性表更换问题
前一段时间写了一份点云降采样代码,直接调用别人的库“Library111”和属性表。但是后来该属性表不好用,就将该库删除重新拷贝了一个库命名“Library_original”。这段时间突然要用到点云降采样的代码,就把工程包含的属性表换成“Library_original”中的属性表,运行却一直提示找不到“Library111”库中的某个文件,检查过属性表中的包含目录和库目录,路径都没有问题,目前还没能解决。。。。...
2021-04-06 16:11:50 369
原创 WIN10+CGAL+VS2017配置
最近配置了CGAL4.11.3,环境为WIN10+VS2017按照网上的博客大神指导配置出了个大概,可是依然遇到不少小的问题。在这里总结一下,以供后期参考。1、CGAL的基本配置可以参考一下两篇博文,讲得非常详细,网上虽然可以直接下载到CGAL.exe文件,但是不用cmake编译一下就会提示“找不到compiler_config.h”文件。2、按照第一篇文章的方法顺利进行到cmake的部分,第二篇文章中对cmake的使用以及后续的属性表配置讲解比较详细https://blog.csdn.net/..
2021-01-13 16:19:44 774
原创 基于体素化方法的点云降采样
前两天做了一个点云降采样的项目,用pcl自带的降采样方法出来的结果不是很理想,于是就自己写了一个。为了使代码执行效率高点就采用了基于点云索引的方式。本文使用的方法为:首先,计算点云群的Bounding Box;然后,根据一定的分辨率将空间点云体素化,并记录下每个体素所包含点云的索引(体素化的实质就是给点云赋予体素标签);最后,遍历体素,根据每个体素内点云的索引取点云坐标,计算每个体素重心的坐标,保留体素内距离重心最近的点。从而实现降采样。经过以上操作获取的点云密度相对较为均匀。1、点云索引计算公式(即
2021-01-04 09:50:12 3545 7
原创 LibLas读写LAS文件+降采样
LibLas读写LAS文件+降采样 前段时间课题组需要写一个点云数据降采样的小程序,要求读写内容都是LAS文件。本来CGAL可以做到,但是发现CGAL中写LAS文件的头文件好像有点问题,经过查阅资料决定用liblas解决。 踩了很多坑,好在最后问题终于解决了。这里把代码记录下来,以供后续查阅。 虽然采用的是pcl中的均匀采样,可是出来的结果貌似并不是很均匀,这个程序在release模式下运行没问题,但是debug模式总是会报一个错误,目前还没找到什么好的办法可以解决。。。。。。。不过目前的需求是能用就
2021-01-04 09:19:49 1063 2
原创 薄板样条插值法
Python实现薄板样条插值最近在做有关卫星高度计的课题,其中涉及到同潮图的绘制。需要利用某海域测高卫星星下点调和常数,进行插值得到目标海域的网格数据,然后绘制同潮图。某天翻阅论文发现某篇文章对薄板样条插值方法描述比较详细,就试着用Python实现了一下。(水平不高,仅供参考)以下是代码:代码中主要采用矩阵计算(因为矩阵计算真的比常规的循环方法要快很多) def TPL_interpolation(lon,lat,height,loc,num): """薄板插值(采用l
2020-06-06 21:22:11 2979 5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人