- 博客(22)
- 收藏
- 关注
原创 QT Creator从源码编译(MinGW64)和使用VTK 9.3.0
非常详细的QT Creator从源码编译和使用VTK 9.3.0,仅限MinGW64.
2024-06-05 22:25:17
879
原创 QT读取和转存xlsx文件
通过上述分析,我们需要解析的文件只有workbook.xml和sheet.xml。分别是WorkBook和SheetMapper,此外,我们还需一个类(XlsxHandler)来完成解压文件,并执行文件操作。workbook保存sheet名的映射关系,sheets则保存每个Sheet的值。其中,workbook.xml保存了xlsx的sheet外部和内部名称的映射关系。sheet.xml则保存着对应Sheet的数据。通过将二者对应,便于程序通过xlsx视图中的文件名到压缩包中寻找对应sheet.xml。
2024-05-16 14:20:44
405
原创 单例导致 RTTI symbol not found for class ‘QObject‘
使用QQmlEngine::setObjectOwnership(&instance, QQmlEngine::CppOwnership)将所有权保留给c++即可。Qt Quick使用qmlRegisterSingletonType注册单例,使用Qt.quit等退出程序时,出现崩溃。调试会输出 RTTI symbol not found for class 'QObject'
2024-04-10 16:59:42
363
原创 c++ Socket(windows) 笔记
在服务器上接收和发送数据send()/recv()在客户端上发送和接收数据send()/recv()断开客户端的连接closesocket()断开服务器连接closesocket()为客户端创建套接字 socket()为服务器创建套接字socket()连接到套接字 connect ()侦听套接字listen()接受连接accept()绑定套接字bind()
2023-10-07 14:44:15
130
原创 二叉树的四种遍历方式(递归or非递归/C++)
二叉树的遍历可以分为先序、中序、后序和按层遍历。前三者可以用递归的方式实现,也可以借助栈非递归地遍历。按曾遍历则是借助队列来实现。递归版非常简单,这里只介绍非递归版,该方式均在循环中完成。先序遍历:如果当前节点不为空,输出当前节点的值。如果其左节点不为空,则将当前节点入栈,再移动到其左节点;如果左节点为空,从栈中取出一个节点作为当前节点(栈空则结束循环),再移动到其右节点。中序遍历:当前节点的左节点非空,则当前节点入栈,否则输出当前节点的值(左节点为空,当前节点就是中间节点。
2023-09-09 16:42:49
134
原创 递归最小边界矩形算法
定义一个空的边列表edgeList,遍历mbrList,取出每个MBR,对每个MBR的四条边进行多边形的拓扑运算,将得到的边存入edgeList。如果点云满足最小建筑物(长和宽不要过小)的条件,计算每个点云的MBR,以及点云端点在curMBR上的投影点,用投影方向校正算法计算得到正确的MBR。将点云放入epList,把修正后的MBR存入mbrList,把返回的索引存入索引队列。根据阈值,计算点云与curMBR的重叠点和非重叠点,将点云划分为多个次级点云,用一个新的端点列表childList存放。
2023-07-26 18:21:52
874
原创 迷宫寻路-Easyx演示
从入口开始,检测当前位置的四个方向是否存在可行的位置P,将P放入队列中,将当前位置存储的距离加1后,替换位置P的值。接着从队列中取出下一位置。重复同样的操作,直到下一个位置是出口即可停止。它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求找出从左上角到右下角的路线。入口点为[0,0],既第一格是可以走的路。寻找最短路径则比较简单,经过的位置都存储了距离入口的距离,从出口的距离逆向寻找。最短路径可能不止一条。
2023-07-05 17:54:57
178
原创 PCL可视化刷新等问题(VS+QT)
setBackgroundColor接收的参数范围为0.0~1.0,如果是0~255需要做转换。使用该方法后无法用2的办法更该颜色,做法是在更在的地方移除点云重新重新添加。以上是个人使用的一些知识总结,希望能帮助各位同学,如有错误,还望指正。两种方式都能更新点云窗口,但是实际用下来,第二种效果会更好。针对PCL刷新问题,我用过两种方式。这里我们需要 头文件。
2023-05-02 00:59:30
893
原创 使用vector的误区.size()
上面代码是为了计算一个点集相邻两点的距离。这段代码在数组points不为空时能正常工作,然而当数组为空时,代码将会崩溃。我长期以为程序会因为i=0,points.size()-1=-1,i<points.size()-1为false,而终止下去;然而事实出乎我的意料,记录一下自己踩坑。因此,如果在使用size()-1时,没有通过索引访问数组,程序将循环很多次;反之,程序会因为访问了范围外的值而崩溃;因为size()函数返回的是无符号整数,当数组为空(即points.size()=0)这时候再减1将会溢出。
2023-04-21 18:47:09
125
原创 点云delaunay三角化PCL and C++
算法改编自一个JS程序。好像是github上的项目,但是时间比较长,不记得是哪个了。最终结果和源程序基本一样。因为是出于兴趣写的,没有很严谨,无法保证算法的百分百正确。本文使用了PCL点云库来作可视化。感兴趣的可以将源码进行规范和优化。
2023-04-14 17:01:44
372
原创 基于PCL和C++实现偏度平衡滤波(SKF)算法
原文:偏度平衡滤波SKF (Skewness balancing filtering)算法假定Lidar点云中自然地面点的高程概率密度分布服从正态分布,非地面点会使得Lidar点云中点的高程概率密度分布偏离正态分布,呈现出偏态分布,偏度表示偏离正态分布的程度。每次校正,高程最高的点被标记为非地面点剔除,迭代进行,直至偏度约等于0,剩余的点即为地面点。程序结束时,in_cloud为地面点云结果,out_cloud为(非地面点云)建筑物点云结果。实现算法得到效果如下,第一图是原始点云,图二是分离的建筑物点云。
2022-11-25 22:22:40
798
1
原创 PCL建筑物点云最小外接矩形实现C++
参考https://blog.csdn.net/Fan_z_0802/article/details/80960790原理很简单,先计算出目标的中心,将目标绕中心旋转一定角度alpha。求出点云的最值Xmax,Xmin,Ymax,Ymin。这四个值两两组合就能组成外接矩形的四个顶点。记录矩形面积最小时的最值和角度。以上步骤得到的矩形的边分别平行于X轴和Y轴,通过对矩形的四个点逆旋转alpha。就能得到任意角度的外接矩形。我们选择旋转目标,而不是外接矩形,这样会更容易理解。 具体实现
2022-11-17 20:47:24
2378
20
原创 如何在VS2022(QT)或QTCreator上配置并显示PCL点云文件
PCL下载地址:https://github.com/PointCloudLibrary/pcl/releases下载这两个文件。选择第三个,如果安装失败就选第一个,没什么影响。勾选CreatePCL Desktop Tcon。安装目录自己选择即可。安装PCL和3rd。 安装完成,在安装目录下找到3rdParty\OpenNI2目录下的OpenNI-Windows-x64-2.2.msi,安装该程序,安装目录自己选择。解压pcl-1.12.1-pdb-msvc2019-win64.zip,将解压得到的文件
2022-11-04 19:57:35
5988
29
原创 JS四大行星
canvas的translate方法是将坐标原点移动至目标位置rotate方法是旋转坐标原点一定角度。save保存当前状态restore恢复保存的状态
2022-10-09 17:47:12
63
原创 C++棋盘覆盖
下边是一个4X4的棋盘,红色为特殊棋盘。要使用分治算法,据需要把四个区(0,1,2,3)转化为含有特殊棋盘的区域。以棋盘中心为中点,将四周的四个棋盘覆盖,如果该区域和红色目标棋盘在同一个区域,将其去掉(因为已经有红色区域了)。考虑四个特殊棋盘中存在的原始特殊棋盘(dr,dc),在哪个区就将int dr, int dc所代表的坐标替换为。如果不考虑特殊期盼的位置,即划分的四个特殊棋盘在四个中心,可以用以下代码分别处理四个区。指的是特殊棋盘在区域3,该区域的特殊棋盘坐标就为(dr,dc)。
2022-09-09 22:31:10
1641
原创 利用C++库的优先队列实现哈夫曼编码
#include<iostream>#include<fstream>#include<string>#include<vector>#include<queue>#include <functional>#include<chrono>using namespace std;using namespace chrono;struct binaChar { char value; int .
2021-11-20 19:12:19
479
原创 C++迷宫生成和BFS/DFS寻路
#include <iostream>#include<graphics.h>#include<vector>#include<stack>#include<queue>using namespace std;#define W 801#define S 801#define X 1struct point { int x, y;};void initMap(vector<vector<int>&g.
2021-10-30 19:28:28
181
原创 哈夫曼编码及文件操作
#include<iostream>#include<string>#include<vector>#include<fstream>using namespace std;//定义字符以及权值struct binaChar{ char value; int width;};//定义储存哈夫曼树节点struct node { char value; int width; struct node* rc.
2021-10-22 01:22:17
540
原创 c#实现鼠标长按和单击混用Unity 2D
private bool continueMouse=false;声明布尔变量用于是否处于长按状态 //以下代码放于Update(),FixedUpdate()重复调用的函数中if (Input.GetMouseButtonUp(0)) continueMouse = false; if (Input.GetMouseButtonDown(0)) continueMouse = true; if (co...
2021-07-22 01:50:00
381
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人