C++
Rson的学习笔记
始终保持学习的态度
展开
-
无序点云数据集的空间变换检测
// 无序点云数据集的空间变换检测// #include "stdafx.h"#include <pcl/point_cloud.h>#include <pcl/octree/octree.h>#include <iostream>#include <vector>#include <ctime>intmai...原创 2019-01-28 10:19:28 · 1116 阅读 · 2 评论 -
PCL交互迭代最近点方法
代码出处:http://pointclouds.org/documentation/tutorials/interactive_icp.php#interactive-icp交互迭代最近法允许用户每次按下“空格”键,一次ICP迭代算法执行,并更新视图。 此程序主要步骤:1、导入点云数据PCL提供IO模块直接读入点云文件。pcl::io::loadPCDFile(&quot;drag...原创 2019-01-28 10:20:32 · 1385 阅读 · 0 评论 -
PCL实现点云框选功能
前言在进行PCL开发时,需要对点进行操作,如删除离群点、噪声点;获取点三维坐标等。单一的选点功能效率低下,掌握点云的框选功能有利于进一步提高应用的交互功能。本博文将一步步介绍如何在PCL中实现点云框选功能。PCL函数说明:点云的框选功能回调函数: pcl::visualization::AreaPickingEvent::AreaPickingEvent ()成员函数 bo...原创 2019-01-28 13:09:00 · 5586 阅读 · 6 评论 -
PCL采样一致性算法
代码出处: http://pointclouds.org/documentation/tutorials/random_sample_consensus.php#random-sample-consensus算法介绍:https://www.cnblogs.com/li-yao7758258/p/6477007.html 直接记录代码,供后续参考学习。/** Filename: ...原创 2019-01-28 10:20:12 · 1211 阅读 · 0 评论 -
PCL--PCLVisualizer类可视化方法
代码出处:http://pointclouds.org/documentation/tutorials/pcl_visualizer.php#pcl-visualizer/** Filename: pcl_visualizer_demo.cpp** Date: 2018-4-19**Description:**/#include &quot;stdafx.h&quot;#include &amp;...原创 2019-01-28 10:19:55 · 4670 阅读 · 0 评论 -
PCL从距离图像提取NARF关键点
今天学习了PCL开源库中NARF关键点提取的相关代码,记录下来,以便后续查阅。代码出处:PCL官方文档#include &quot;stdafx.h&quot;#include &amp;lt;iostream&amp;gt;#include &amp;lt;boost\thread\thread.hpp&amp;gt;#include &amp;lt;pcl\原创 2019-01-28 13:08:38 · 750 阅读 · 0 评论 -
Dijkstra最短路径算法
Dijkstra算法又称为迪杰斯特拉算法。具体思想是从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径。 如下图所示:图片出处 最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。具体实现步骤:1.将起点A放入集合中,A点的权值为0,因为A-&gt;A=0。2.与起点A相连的所有点的权值设置为A...原创 2018-05-09 19:28:26 · 351 阅读 · 0 评论 -
CString 、Char*与LPCWSTR类型转换解决方案
【原文出处】: https://blog.csdn.net/zhouxuguang236/article/details/8761497 https://blog.csdn.net/sl159/article/details/6412171一、char* 转 LPCWSTR1、通过MultiByteToWideChar函数转换MultiByteToWideChar函数是将多字节转换...转载 2018-05-03 19:38:49 · 6160 阅读 · 0 评论 -
std::string 与 char* 之间的转换
std::string 是c++标准库里面其中一个,封装了对字符串的操作1:把string转换为char*有三种方法:1. .data 2. .c_str 3. .copyusing namesapce std;string str = "hello world";const char *p = str.data();printf(p);//==>// hel...原创 2018-04-27 21:18:47 · 52548 阅读 · 0 评论 -
OpenCV使用直方图统计像素
// Image_progress_class.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include &lt;opencv2\opencv.hpp&gt;#include &lt;iostream&gt;using namespace cv;using namespace std;class Histogram1D{public...原创 2018-06-04 19:34:05 · 1105 阅读 · 0 评论 -
剑指offer面试题2-- 替换空格
题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { int oldLength = strlen(str); ...原创 2018-07-11 15:17:47 · 138 阅读 · 0 评论 -
VTK生成一个圆柱
最近开始学习VTK 编程技术,特此记录,以便后期回顾!代码来源于数据《VTK图形图像开发进阶》。代码注释加深自己对各个类的理解。#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2);VTK_MODULE_INIT(vtkInteractionStyle);#include <vtkSmartPoi...原创 2018-07-26 11:24:02 · 1571 阅读 · 0 评论 -
OpenCascade学习笔记之GeomAPI_ExtremaCurveCurve
今天在研究三维空间直线和圆相交的问题上,遇到了一个小小的问题。但是方法总比困难多,通过自己的不懈努力,终于解决了这个问题。在开始学习OCC时,我们可能在MFCSample中见到一个曲线求交的例子。具体代码如下:Handle(TColgp_HArray1OfPnt2d) harray = new TColgp_HArray1Of...原创 2018-11-28 20:56:20 · 1749 阅读 · 1 评论 -
C++运算符重载
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。// operatorOverload.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include <...转载 2018-12-06 20:48:58 · 155 阅读 · 0 评论 -
PCL快速点特征直方图配准算法
已知点云P中有n个点,那么它的点特征直方图(PFH)的理论计算复杂度是O(nk^2) , 其中k是点云P中每个点p计算特征向量时考虑的邻域数量。对于实际应用中,密集点云的点特征直方图(PFH)的计算,是十分耗时的。本博文介绍一种快速快速点特征直方图FPFH(Fast Point Feature Histograms)算法。FPFH把算法的计算复杂度降低到了O(nk) ,但是任然保留了PFH大部分的...原创 2019-01-28 13:09:19 · 7147 阅读 · 6 评论 -
PCL拾取屏幕上三维点坐标
PCL中通过注册回调函数实现点云坐标选取。主要使用的函数: registerPointPickingCallback() PCL官方代码: http://www.pointclouds.org/documentation/tutorials/ground_based_rgbd_people_detection.php主要实现代码如下:#include &amp;lt;pcl\io\pcd_i...原创 2019-01-28 13:09:36 · 6663 阅读 · 14 评论 -
PCL学习笔记--利用矩阵对点云进行刚体变换(ICP)
利用矩阵对点云进行刚体变换 在这篇教程中,我们会学习如何用一个4*4的矩阵对点云进行变换。我们会加载一个点云,然后对其进行刚体变换(旋转加平移),并可视化结果,最后通过ICP算法对点云进行配准。**程序**/** 功能: 点云刚体变换* 头文件: #include &amp;lt;pcl/common/transforms.h&amp;gt;* 功能函数: pcl::transformPoint...原创 2019-01-28 13:11:55 · 11589 阅读 · 5 评论 -
PCL实现泊松表面重建
简介: 泊松表面重建是一种隐函数的重构方法。通过定义模型内部的值大于零, 模型外部它的值小于零, 然后提取值为零的等值面, 直接地重构逼近表面。 泊松表面重建的算法融合了全局和局部方法的优点,采取隐性拟合的方式,通过求解泊松方程来取得点云模型所描述的表面信息代表的隐性方程,通过对该方程进行等值面提取,从而得到具有几何实体信息的表面模型。优点在于,重建出的模型具有水密性的封闭特征,具有良好的几何...原创 2019-01-28 13:11:46 · 9763 阅读 · 3 评论 -
PCL贪婪投影三角算法曲面重建
/** Filename: recon_greedyProjection** Date: 2018-3-29**Description:**/#include &quot;stdafx.h&quot;#include &amp;lt;iostream&amp;gt;#include &amp;lt;string&amp;gt;#include &am原创 2019-01-28 13:11:36 · 3014 阅读 · 0 评论 -
PCL 点云对象和点云指针对象的之间的变换
最近研究PCL点云库时发现了一个奇怪的现象,就是在调用一些功能函数()时,发现点云的类型总是报错。本人对指针没有过多的研究,现将出现的问题总结如下:1、点云对象的声明pcl::PointCloud&amp;lt;pcl::PointXYZ&amp;gt; cloud;//点云对象pcl::PointCloud&amp;lt;pcl::PointXYZ&amp;gt;::Ptr cloudPtr (n原创 2019-01-28 13:10:26 · 4177 阅读 · 2 评论 -
PCD文件读取并显示
前面一段时间一直在写论文,好久都没有进行编程学习,突然觉得无从下手了,翻开以前写的代码练练手,顺便记录下来以便以后自己可以快速熟悉。一个简单的点云pcd文件读取,并可视化。/** Filename: pcd_read ** Date: 2018-3-27 **Description: Read PCD files & point cloud visualization...原创 2018-03-27 13:31:59 · 21668 阅读 · 14 评论 -
PCL点云类型之间相互转换
在进行PCL学习的过程中,最常见的点云类型就是pcl::PointCloud &amp;lt; pcl::PointXYZ &amp;gt;,随着不断学习,又遇到了pcl::PCLPointCloud2::Ptr这种点云的类型,因此弄清两者的转换关系十分有必要。 PCL中有两个函数直接解决了两者的转换关系: 1.pcl::fromPCLPointCloud2() 2.pcl::toPCLPo...原创 2019-01-28 13:10:09 · 4482 阅读 · 1 评论 -
PCL迭代最近点算法(ICP)的C++实现
简介: 在维基百科中是这样介绍迭代最近点算法。迭代最近点(ICP)是一种用于最小化两点云之间差异的算法。给定P、Q两个点集,求解旋转矩阵R和平移矩阵T使得min{distance(P,Q)}. C++算法流程图: 四元数求解方法 C++代码/**** Filename:icp.h** Copyright (c) 2017-2018 ** Author:Rson...原创 2019-01-28 13:11:26 · 4944 阅读 · 4 评论 -
PCL进行法向估计
PCL关于法向操作的相关代码void PCLICP::NormalEstimation(pcl::PointCloud&amp;lt;pcl::PointXYZ&amp;gt;::Ptr cloud){ //创建法线估计向量 pcl::NormalEstimation&amp;lt;pcl::PointXYZ, pcl::Normal&amp;gt; ne; ne.setInputCloud(clo..原创 2019-01-28 13:11:13 · 1224 阅读 · 0 评论 -
PCL点云滤波算法实现
通过非接触法测量设备获取物体的点云数据时,由于测量设备的精度,环境因素和被测物体的表面性质的影响,点云数据中不可避免会出现一些噪声点,噪声点对后续的点云拼接、曲面重构影响十分大。必须对其进行去噪处理。PCL中点云滤波模块提供了很多灵活实用的滤波处理算法,例如:双边滤波,高斯滤波,条件滤波,直通滤波,基于随机采样一致性滤波等等。 1、体素网格滤波VoxelGrid//主要代码pcl::P...原创 2019-01-28 13:10:58 · 6116 阅读 · 1 评论 -
PCL_PCLPlotter类学习教程
绘制多项式曲线图 //定义绘图器 pcl::visualization::PCLPlotter * plotter = new pcl::visualization::PCLPlotter(); //函数方程:y = 2 + 3x + x^2 std::vector&amp;lt;double&amp;gt; func1(3, 0); func1[0] = 2; ...原创 2019-01-28 13:08:13 · 1077 阅读 · 0 评论 -
PCL正态分布变换(Normal Distributions Transform)进行点云配准
直接记录代码void NormTran::run(){ readfile(&quot;bunny_0.asc&quot;, &quot;bunny_1.asc&quot;);//加载目标点云数据 //滤波 pcl::ApproximateVoxelGrid&amp;lt;pcl::PointXYZ&amp;gt; approximate_voxel_filter;原创 2019-01-28 13:10:44 · 3475 阅读 · 0 评论 -
PCL从点云创建深度图像
构造点云数据pcl::PointCloud&amp;lt;pcl::PointXYZ&amp;gt; pointcloud; for (float y = -0.5f; y &amp;lt;= 0.5f; y += 0.01f) { for (float z = -0.5f; z &amp;lt;= 0.5f; z += 0.01f) { pcl:原创 2019-01-28 10:20:51 · 5425 阅读 · 5 评论 -
CString和string相互转换
一、string转CStringstring str = "hello world";CString cstr(str.c_str());二、CString转stringCString theCStr = L"Hello C++";std::string STDStr(CW2A(theCStr.GetString()));(未完续)原创 2019-05-22 11:04:25 · 25237 阅读 · 0 评论