- 博客(139)
- 资源 (1)
- 收藏
- 关注
原创 基于PCL实现RGB-D图像转换为点云
RGB 和 depth图已经对齐了,也就是 depth 图中某个位置的深度值在 RGB图中同样的位置处就是它对应的颜色。注意:OpenCV里 RGB 图像里存储颜色顺序为BGR,所以从 RGB中获取颜色时顺序也是 BGR而不是RGB。
2024-09-02 14:41:31
427
原创 PCL点云滤波
激光扫描仪、RGB-D相机等设备获取点云数据时,由于设备精度,电磁波的衍射特性,环境因素,操作者经验等因素,导致获取的点云存在一定程度的噪声。点云中的噪声点对后续操作的影响比较大,因此在进行后续处理操作前,应先去除点云噪声。PCL中有一个专门的点云滤波模块,可以将噪声点去除,还可以进行点云压缩等操作,非常灵活实用,例如:双边滤波,统计滤波,条件滤波,随机采样一致性滤波等。一般来说,滤波是为了解决以下三种问题:1.按照给定的规则限制过滤去除点;2. 通过常用滤波算法修改点的部分属性;
2024-09-02 11:52:24
766
原创 3d网格补洞算法
通常一条边连接两个三角面片,这种边称为网格内部边,而如果某条边仅连接一个三角面片,那么称这条边为网格边界边,所有的边界边按顺序连接之后就形成了网格的孔洞。能量函数的第一部分是使得网格顶点尽量光滑,即每个顶点位于其1环邻域顶点的中心,第二部分是为了控制顶点的位置满足要求。最小二乘网格的优势是能够生成高质量的光滑网格,生成过程仅需要网格的拓扑连接关系和少数控制点的坐标信息。(5).判断孔洞是否修补完整,若未完整,转(2),否则结束。为网格连通区域的个数,如果网格是全连通的,那么矩阵。(2).计算每个边界点。
2024-08-26 11:36:49
1026
原创 基于PCL实现多边形框选点云并进行裁剪(附C++源码)
采用PNPoly射线法判断点是否在多边形内部,并通过PCL可视化界面实现实时框选裁剪点云。
2024-06-20 17:12:11
869
原创 CMakeLists.txt添加include和src文件夹内源码至project
【代码】CMakeLists.txt添加include和src文件夹内源码至project。
2024-05-30 14:37:57
305
原创 PCL 基于颜色信息的点云区域生长分割算法
类 class pcl::SeededHueSegmentation 是基于颜色信息的点云区域生长分割算法,该算法在分割时不仅使用了点云的空间信息,还使用了点云所带的可见光信息,适合基于RGBD设备获取的点云进行分割处理。对通过setInputCloud ( )和setIndices ( )共同指定的输入点云进行聚类分割,输出分割出来的结果存储在output中返回。设置搜索时所用的搜索机制,tree指向搜索时所用的搜索对象,例如kdtree、octree等。
2024-02-27 17:04:01
456
原创 利用PCL实现点云绕质心旋转
PCL中点云旋转都是绕原点旋转的,要绕质心旋转,则应该先将点云质心移至原点,绕原点旋转后,再将点云质心移回原来的位置,便达到了点云绕质心旋转的目的。
2023-09-22 15:53:58
602
原创 Windows10+OpenCL环境配置
在 Windows 开始菜单中 键入 英特尔显卡。方法1:我的电脑用的是intel的显卡,具体查看方式:桌面右键 → 英特尔显卡设置 → 选项与支持打开英特尔® 显卡控制中心。下载地址:英特尔https://software.intel.com/en-us/intel-opencl/download。如果安装了,它应该 会在 选项中显示英特尔® 显卡控制中心。注意 由于名称中包含的版权字符,键入 英特尔 词将不起作用。方法 3:从 Windows 开始菜单中, 搜索 “添加并删除程序”,然后 单击 它。
2023-08-10 09:45:22
2647
原创 CMake编译PCL1.12.1工程报错Could NOT find Boost (missing: filesystem system) (found version “x.xx.x“)
参考了网上各种配置Boost的方法,最终悲催的发现,我把CMake版本由3.17升级到3.22就可以了,深入查找发现,时CMake自带的findBoost.cmake进行了更改,天坑,希望帮到一样问题的伙伴们。参考报错信息定位到PCLConfig.cmake寻找第三方库Boost部分110~136行。最近在用PCL 1.12.1重新编译PCL 1.8.1已经编译通过的工程,报错。
2023-03-28 17:19:22
686
1
原创 PCL1.12.1 无效的宏定义BOOST_DEFINITIONS -DBOOST_ALL_NO_LIB
打开定位到第130行,将if(WIN32 AND NOT MINGW)替换成if(WIN32 AND NOT MINGW AND NOT “${BOOST_DEFINITIONS}” MATCHES “BOOST_ALL_NO_LIB”)。在编译其他项目时,CMake使用了find_package( PCL 1.12.1 REQUIRED ),打开.sln后发现有无效的宏定义“BOOST_ALL_NO_LIB-DBOOST_ALL_NO_LIB”。保存,重新CMake,vs打开解决方案发现问题已解决。
2023-03-28 17:08:48
624
转载 空间中一点沿某一防线移动距离d后坐标
1.已知三维空间一点P(x1,y1,z1),将其沿向量n(x,y,z)方向,移动距离d,求移动后P’的坐标(x2,y2,z2)?2.如果不止一个点P,而是三维空间点集Mi(xi,yi,zi),i=0,1,2……n,每个点都有自己的法向量ni(xi,yi,zi),将每个M,沿每个对应的n,移动距离d,则移动后Mi’的坐标是多少?//单点情况x1 = 1;y1 = 1;z1 = -1;x = 1;y = 0;z = 1;d = 2; P = [x1;y1;z1];N = [x;y;z]
2022-05-18 16:04:55
1397
1
转载 qt 部分控件 setStyleSheet 使用总结
qt 部分控件 setStyleSheet 使用总结主要使用到的工具有:QToolBar,QToolBox,QPushButton,QLabel,QListWidget,QTabWidget,QTableWidget,QTreeWidget,QToolButton.QPushButton,QToolButton的“按下”三态贴图,QPushButton为例:setStyleSheet(“QPushButton:hover{border-image:url(:/images/ui_design/1.pn
2022-04-30 18:56:43
1455
原创 两个Vector交集、并集、补集运算
C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,具体如下代码所示:#include "iostream"#include "vector" #include "algorithm" //sort函数、交并补函数#include "iterator" //求交并补使用到的迭代器using namespace std; //
2022-04-21 17:08:12
4798
1
原创 UTF8STRING与std:string互转
UTF8与std:string互转 Ajax请求发送的UTF8编码字符串传到后台使用std:string进一步处理,如果包含中文会出现中文乱码的问题:涉及到的头文件:函数所在头文件:windows.h#include <windows.h>wchar_t类型所需头文件:wchar.h#include <wchar.h>代码// UTF8转std:string// 转换过程:先将utf8转双字节Unicode编码,再通过WideCharToMultiByte将宽字符
2022-03-16 14:11:53
917
转载 已知圆弧上任意三点,计算圆心与半径--C++代码实现
// compute_sphere_center.cpp : 定义控制台应用程序的入口点。//#include<iostream>#include<vector>using namespace std;struct point{ double x = 0; double y = 0; double z = 0;};struct plane{ double a = 0; double b = 0; double c
2021-12-21 14:19:55
1409
原创 std::vector向量排序,并返回原地址
template <typename T>std::vector<size_t> sort_indexes(const std::vector<T> &v){ std::vector<size_t> idx(v.size()); // 初始化索引向量 std::iota(idx.begin(), idx.end(), 0);
2021-12-08 11:06:37
941
原创 Opencv读取图像,图像通道分离,图像通道融合
//// Created by cynthia on 2021/11/25.//#include <sys/types.h>#include <sys/stat.h>#include "unistd.h"#include "dirent.h"#include <iostream>#include <iostream>#include <direct.h>#include <opencv2/opencv.hpp>u
2021-11-25 21:40:09
248
原创 QT打包exe文件
1.将原release模式编译的exe文件拷贝至新建空白文件夹。2.找到qt编译终端,打开显示如下界面:3.打包在上述终端输入windeployqt.exe exe文件所在目录回车待打包完成,将原release模式编译的exe文件的依赖库拷贝出来即可。...
2021-11-23 22:19:03
340
原创 C++生成随机数
#include <iostream>#include <cstdlib>#include <ctime>#define random(x) rand()%(x)using namespace std;int main(){ srand((int)time(0)); // 产生随机种子 把0换成NULL也行 for (int i = 0; i < 10; i++) { cout << random
2021-11-17 12:52:29
211
原创 QT配置Eigen库
1.pro文件中包含解压的eigen目录INCLUDEPATH += D:/Eigen/eigen-3.3.9该目录下包含文件如下:
2021-11-09 20:25:10
3358
1
原创 VTK读取.ply数据并获取顶点,面等信息
//Code by cynthia chen, 2021.10.29#include <iostream>#include <time.h>#include <string>// 利用VTK读取ply网格文件#include <vtkPolyDataMapper.h>//#include <vtkActor.h>#include <vtkRenderer.h>#include <vtkRenderWindow.h&
2021-10-29 16:56:15
1102
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人