当前位置: 首页 > news >正文

网站的开发技术小程序商城开发商华网天下北京

网站的开发技术,小程序商城开发商华网天下北京,电商界面设计图,怎么查看网站开发语言一、下载visual studio2022 下载网址#xff1a;Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com) 安装的时候选择使用C的桌面开发“#xff0c;同时可以修改文件路径#xff0c;可以放在D盘。修改文件路径的时候#xff0c;共享组件、…一、下载visual studio2022 下载网址Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com) 安装的时候选择使用C的桌面开发“同时可以修改文件路径可以放在D盘。修改文件路径的时候共享组件、工具和SDK的路径无法修改可能是因为你之前有安装过Visual studio。可以通过以下操作解决 1.首先WINR输入regedit回车 2.按照这个顺序展开目录 HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudioSetup 3.右键删除SharedInstallationPath 和 CachePath就可以修改共享组件、工具和SDK的路径了 二、安装PCL1.14.0 都是以我自己的安装路径为例 1.下载 官网下载Releases · PointCloudLibrary/pcl · GitHub 只要下载PCL-1.14.0-AllInOne-msvc2022-win64.exe和pcl-1.14.0-pdb-msvc2022-win64.zip两个文件即可。 如果下载太慢我这里已经下载好了 链接https://pan.baidu.com/s/177DvR5gOcVL7iPm4xI7s_w  提取码wstc  2.安装 点击PCL-1.14.0-AllInOne-msvc2022-win64.exe进行安装 下一步 我接受 选择Add PCL to the system Path for all users下一步 可以选择修改路径我自己的路径是C:\Compiler\PCL\PCL 1.14.0你可以选择自己的路径不过一定要记得因为之后配置环境变量要用到然后下一步 没必要创建快捷方式下一步然后点击安装在安装过程中会出现提醒你变量名太长没办法写入环境变量这个时候你直接确定就行等安装完成之后自己配置环境变量。安装完成之后会出现这三个应用 把OpenNi2.2 SDK for Windows 64-bit给卸载掉因为它有默认安装路径即使我们修改文件安装路径它还是安装在默认路径卸载完之后打开C:\Compiler\PCL\PCL 1.14.0\3rdParty\OpenNI2文件夹发现里面有一个OpenNI-Windows-x64-2.2.msi这是安装PCL-1.14.0-AllInOne-msvc2022-win64.exe的时候附带的点击安装可以帮你再次安装OpenNi2.2 SDK for Windows 64-bit而且可以修改成自己的路径我的路径是C:\Compiler\PCL\PCL 1.14.0\3rdParty\OpenNI2 安装完成之后就会包含这些内容 接着把pcl-1.14.0-pdb-msvc2022-win64.zip解压 把里面的所有pdb文件都复制到C:\Compiler\PCL\PCL 1.14.0\bin里面 3.配置环境变量 此电脑右键属性 点击高级系统设置 点击环境变量 确保这四个都存在这是安装PCL-1.14.0-AllInOne-msvc2022-win64.exe的时候自动生成的接着点击Path开始配置环境变量 C:\Compiler\PCL\PCL 1.14.0\bin C:\Compiler\PCL\PCL 1.14.0\3rdParty\VTK\bin C:\Compiler\PCL\PCL 1.14.0\3rdParty\OpenNI2\Tools C:\Compiler\PCL\PCL 1.14.0\3rdParty\OpenNI2\Redist C:\Compiler\PCL\PCL 1.14.0\3rdParty\Boost\lib C:\Compiler\PCL\PCL 1.14.0\3rdParty\Qhull\bin C:\Compiler\PCL\PCL 1.14.0\3rdParty\FLANN\bin 把这几个路径添加进环境变量即可。 三、创建项目 打开visual studio2022 创建新项目 选择空项目下一步 可以修改项目名称和位置创建项目 右键点击源文件添加新项随便取个名字点击添加注意我已经添加过文件了如果是新创建的文件源文件里面是啥也没有的 右键点击解决方案下方的pointCloud这个是项目名称点击属性就会出现这个属性页点击VC目录 C:\Compiler\PCL\PCL 1.14.0\3rdParty\Boost\include\boost-1_84 C:\Compiler\PCL\PCL 1.14.0\3rdParty\Eigen3\include\eigen3 C:\Compiler\PCL\PCL 1.14.0\3rdParty\FLANN\include C:\Compiler\PCL\PCL 1.14.0\3rdParty\Qhull\include C:\Compiler\PCL\PCL 1.14.0\3rdParty\VTK\include\vtk-9.3 C:\Compiler\PCL\PCL 1.14.0\3rdParty\OpenNI2\Include C:\Compiler\PCL\PCL 1.14.0\include\pcl-1.14 把这些路径加入到包含目录里 C:\Compiler\PCL\PCL 1.14.0\3rdParty\FLANN\lib C:\Compiler\PCL\PCL 1.14.0\3rdParty\Boost\lib C:\Compiler\PCL\PCL 1.14.0\lib C:\Compiler\PCL\PCL 1.14.0\3rdParty\VTK\lib C:\Compiler\PCL\PCL 1.14.0\3rdParty\Qhull\lib C:\Compiler\PCL\PCL 1.14.0\3rdParty\OpenNI2\Lib 这些路径放到库目录里 然后点击C/C的所有选项把SDL检查改成否 再点击C/C的代码生成修改启用增强指令集为高级适量扩展(X86/X64)(/arch:AVX) BOOST_USE_WINDOWS_H NOMINMAX _CRT_SECURE_NO_DEPRECATE 在C/C的预处理器里面的预处理定义增加这三行 pcl_commond.lib pcl_featuresd.lib pcl_filtersd.lib pcl_iod.lib pcl_io_plyd.lib pcl_kdtreed.lib pcl_keypointsd.lib pcl_mld.lib pcl_octreed.lib pcl_outofcored.lib pcl_peopled.lib pcl_recognitiond.lib pcl_registrationd.lib pcl_sample_consensusd.lib pcl_searchd.lib pcl_segmentationd.lib pcl_stereod.lib pcl_surfaced.lib pcl_trackingd.lib pcl_visualizationd.lib vtkcgns-9.3-gd.lib vtkChartsCore-9.3-gd.lib vtkCommonColor-9.3-gd.lib vtkCommonComputationalGeometry-9.3-gd.lib vtkCommonCore-9.3-gd.lib vtkCommonDataModel-9.3-gd.lib vtkCommonExecutionModel-9.3-gd.lib vtkCommonMath-9.3-gd.lib vtkCommonMisc-9.3-gd.lib vtkCommonSystem-9.3-gd.lib vtkCommonTransforms-9.3-gd.lib vtkDICOMParser-9.3-gd.lib vtkDomainsChemistry-9.3-gd.lib vtkDomainsChemistryOpenGL2-9.3-gd.lib vtkdoubleconversion-9.3-gd.lib vtkexodusII-9.3-gd.lib vtkexpat-9.3-gd.lib vtkFiltersAMR-9.3-gd.lib vtkFiltersCore-9.3-gd.lib vtkFiltersExtraction-9.3-gd.lib vtkFiltersFlowPaths-9.3-gd.lib vtkFiltersGeneral-9.3-gd.lib vtkFiltersGeneric-9.3-gd.lib vtkFiltersGeometry-9.3-gd.lib vtkFiltersHybrid-9.3-gd.lib vtkFiltersHyperTree-9.3-gd.lib vtkFiltersImaging-9.3-gd.lib vtkFiltersModeling-9.3-gd.lib vtkFiltersParallel-9.3-gd.lib vtkFiltersParallelImaging-9.3-gd.lib vtkFiltersPoints-9.3-gd.lib vtkFiltersProgrammable-9.3-gd.lib vtkFiltersSelection-9.3-gd.lib vtkFiltersSMP-9.3-gd.lib vtkFiltersSources-9.3-gd.lib vtkFiltersStatistics-9.3-gd.lib vtkFiltersTexture-9.3-gd.lib vtkFiltersTopology-9.3-gd.lib vtkFiltersVerdict-9.3-gd.lib vtkfmt-9.3-gd.lib vtkfreetype-9.3-gd.lib vtkGeovisCore-9.3-gd.lib vtkgl2ps-9.3-gd.lib vtkglew-9.3-gd.lib vtkhdf5-9.3-gd.lib vtkhdf5_hl-9.3-gd.lib vtkImagingColor-9.3-gd.lib vtkImagingCore-9.3-gd.lib vtkImagingFourier-9.3-gd.lib vtkImagingGeneral-9.3-gd.lib vtkImagingHybrid-9.3-gd.lib vtkImagingMath-9.3-gd.lib vtkImagingMorphological-9.3-gd.lib vtkImagingSources-9.3-gd.lib vtkImagingStatistics-9.3-gd.lib vtkImagingStencil-9.3-gd.lib vtkInfovisCore-9.3-gd.lib vtkInfovisLayout-9.3-gd.lib vtkInteractionImage-9.3-gd.lib vtkInteractionStyle-9.3-gd.lib vtkInteractionWidgets-9.3-gd.lib vtkIOAMR-9.3-gd.lib vtkIOAsynchronous-9.3-gd.lib vtkIOCesium3DTiles-9.3-gd.lib vtkIOCGNSReader-9.3-gd.lib vtkIOChemistry-9.3-gd.lib vtkIOCityGML-9.3-gd.lib vtkIOCONVERGECFD-9.3-gd.lib vtkIOCore-9.3-gd.lib vtkIOEnSight-9.3-gd.lib vtkIOExodus-9.3-gd.lib vtkIOExport-9.3-gd.lib vtkIOExportGL2PS-9.3-gd.lib vtkIOExportPDF-9.3-gd.lib vtkIOGeometry-9.3-gd.lib vtkIOHDF-9.3-gd.lib vtkIOImage-9.3-gd.lib vtkIOImport-9.3-gd.lib vtkIOInfovis-9.3-gd.lib vtkIOIOSS-9.3-gd.lib vtkIOLegacy-9.3-gd.lib vtkIOLSDyna-9.3-gd.lib vtkIOMINC-9.3-gd.lib vtkIOMotionFX-9.3-gd.lib vtkIOMovie-9.3-gd.lib vtkIONetCDF-9.3-gd.lib vtkIOOggTheora-9.3-gd.lib vtkIOParallel-9.3-gd.lib vtkIOParallelXML-9.3-gd.lib vtkIOPLY-9.3-gd.lib vtkIOSegY-9.3-gd.lib vtkIOSQL-9.3-gd.lib vtkioss-9.3-gd.lib vtkIOTecplotTable-9.3-gd.lib vtkIOVeraOut-9.3-gd.lib vtkIOVideo-9.3-gd.lib vtkIOXML-9.3-gd.lib vtkIOXMLParser-9.3-gd.lib vtkjpeg-9.3-gd.lib vtkjsoncpp-9.3-gd.lib vtkkissfft-9.3-gd.lib vtklibharu-9.3-gd.lib vtklibproj-9.3-gd.lib vtklibxml2-9.3-gd.lib vtkloguru-9.3-gd.lib vtklz4-9.3-gd.lib vtklzma-9.3-gd.lib vtkmetaio-9.3-gd.lib vtknetcdf-9.3-gd.lib vtkogg-9.3-gd.lib vtkParallelCore-9.3-gd.lib vtkParallelDIY-9.3-gd.lib vtkpng-9.3-gd.lib vtkpugixml-9.3-gd.lib vtkRenderingAnnotation-9.3-gd.lib vtkRenderingContext2D-9.3-gd.lib vtkRenderingContextOpenGL2-9.3-gd.lib vtkRenderingCore-9.3-gd.lib vtkRenderingFreeType-9.3-gd.lib vtkRenderingGL2PSOpenGL2-9.3-gd.lib vtkRenderingHyperTreeGrid-9.3-gd.lib vtkRenderingImage-9.3-gd.lib vtkRenderingLabel-9.3-gd.lib vtkRenderingLICOpenGL2-9.3-gd.lib vtkRenderingLOD-9.3-gd.lib vtkRenderingOpenGL2-9.3-gd.lib vtkRenderingSceneGraph-9.3-gd.lib vtkRenderingUI-9.3-gd.lib vtkRenderingVolume-9.3-gd.lib vtkRenderingVolumeOpenGL2-9.3-gd.lib vtkRenderingVtkJS-9.3-gd.lib vtksqlite-9.3-gd.lib vtksys-9.3-gd.lib vtkTestingRendering-9.3-gd.lib vtktheora-9.3-gd.lib vtktiff-9.3-gd.lib vtkverdict-9.3-gd.lib vtkViewsContext2D-9.3-gd.lib vtkViewsCore-9.3-gd.lib vtkViewsInfovis-9.3-gd.lib vtkWrappingTools-9.3-gd.lib vtkzlib-9.3-gd.lib 在链接器的输入的附加依赖项里增加这些配置完成电脑重启即可生效 四、点云配准 #include pcl/point_types.h #include pcl/point_cloud.h #include pcl/features/fpfh_omp.h #include pcl/io/ply_io.h//pcd输入输出头文件 #include pcl/registration/icp.h//点云icp算法头文件 #include pcl/registration/ndt.h//点云NDT算法头文件 #include pcl/registration/ia_ransac.h//点云ransac迭代对齐算法(SAC-IA)算法头文件 #include pcl/registration/gicp.h//点云GICP算法的头文件 #include pcl/visualization/pcl_visualizer.h//点云可视化头文件 #include time.h #include boost/thread.hpp #include pcl/features/normal_3d_omp.h typedef pcl::PointXYZ PointT; //重定义pcl::PointXYZ为PointT typedef pcl::PointCloudPointT PointCloud; //重定义pcl::PointCloudPointT为PointCloud //点云配准类型 typedef pcl::IterativeClosestPointpcl::PointXYZ, pcl::PointXYZ ICP; typedef pcl::NormalDistributionsTransformpcl::PointXYZ, pcl::PointXYZ NDT; typedef pcl::SampleConsensusInitialAlignmentpcl::PointXYZ, pcl::PointXYZ, pcl::FPFHSignature33 SAC_IA; typedef pcl::GeneralizedIterativeClosestPointpcl::PointXYZ, pcl::PointXYZ GICP; //FPFH特征 typedef pcl::FPFHEstimationOMPpcl::PointXYZ, pcl::Normal, pcl::FPFHSignature33 FPFHEstimation; typedef pcl::PointCloudpcl::FPFHSignature33 FPFH; //法线估计 typedef pcl::NormalEstimationOMPpcl::PointXYZ, pcl::Normal NormalEstimation; typedef pcl::PointCloudpcl::Normal Normal; typedef pcl::search::KdTreepcl::PointXYZ KdTreeT;//点云可视化 void visualize_pcd(PointCloud::Ptr pcd_src,PointCloud::Ptr pcd_tgt,PointCloud::Ptr pcd_final) {pcl::visualization::PCLVisualizer viewer(registration Viewer);// 设置背景viewer.setBackgroundColor(1, 1, 1);// 添加坐标轴到可视化对象参数指定轴的大小长度这里设置为1.0单位长度viewer.addCoordinateSystem(0.5);// 设置相机位置和方向viewer.initCameraParameters();pcl::visualization::PointCloudColorHandlerCustomPointT src_h(pcd_src, 0, 255, 0);pcl::visualization::PointCloudColorHandlerCustomPointT tgt_h(pcd_tgt, 255, 0, 0);pcl::visualization::PointCloudColorHandlerCustomPointT final_h(pcd_final, 0, 0, 255);//viewer.addPointCloud(pcd_src, src_h, source cloud); //source绿色viewer.addPointCloud(pcd_tgt, tgt_h, tgt cloud); //target红色viewer.addPointCloud (pcd_final, final_h, final cloud); //final蓝色while (!viewer.wasStopped()){viewer.spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(1000));} }void printinfo(Eigen::Matrix4f icp_trans, Eigen::Matrix3f rotation, Eigen::Vector3f translation, Eigen::Vector3f euler_angles_deg,Eigen::Quaternionf quaternion) {cout.setf(ios::fixed);cout.precision(5);cout endl Transformation matrix: endl icp_trans endl;//输出变换矩阵cout endl Rotation matrix: endl rotation endl;cout endl Translation vector: endl translation endl;cout endl Euler Angle: endl;cout endl roll(x): euler_angles_deg[2] endl;cout endl pitch(y): euler_angles_deg[1] endl;cout endl yaw(z): euler_angles_deg[0] endl;// 输出四元数,由于欧拉角时常出现万向节所以可以使用四元数来表示旋转这样更精确cout endl Rotation quaternion: endl w quaternion.w() endl , x quaternion.x() endl , y quaternion.y() endl , z quaternion.z() endl; }void downsampling(PointCloud::Ptr cloud_src_o, PointCloud::Ptr cloud_tgt_o,pcl::VoxelGridpcl::PointXYZ::Ptr voxel_grid) {float leaf 0.005f;voxel_grid-setLeafSize(leaf, leaf, leaf); // 示例叶子大小voxel_grid-setInputCloud(cloud_src_o);voxel_grid-filter(*cloud_src_o);voxel_grid-setInputCloud(cloud_tgt_o);voxel_grid-filter(*cloud_tgt_o); } void normalestimation(NormalEstimation ne, Normal::Ptr src_normals, Normal::Ptr tgt_normals, KdTreeT::Ptr tree, PointCloud::Ptr cloud_src_o, PointCloud::Ptr cloud_tgt_o) {创建一个NormalEstimationOMP对象,进行法线计算;ne.setSearchMethod(tree);ne.setKSearch(20);ne.setInputCloud(cloud_src_o);ne.compute(*src_normals);ne.setInputCloud(cloud_tgt_o);ne.compute(*tgt_normals);cout 原点云法线计算完成 endl *src_normals endl;cout 目标点云法线计算完成 endl *tgt_normals endl; }void fpfh_features(FPFHEstimation fpfh, FPFH::Ptr src_fpfhs,FPFH::Ptr tgt_fpfhs, PointCloud::Ptr cloud_src_o, PointCloud::Ptr cloud_tgt_o, KdTreeT::Ptr tree, Normal::Ptr src_normals, Normal::Ptr tgt_normals) {fpfh.setSearchMethod(tree);fpfh.setRadiusSearch(0.05); // Use a radius search instead of a KdTree searchfpfh.setInputCloud(cloud_src_o);fpfh.setInputNormals(src_normals);fpfh.compute(*src_fpfhs);fpfh.setInputCloud(cloud_tgt_o);fpfh.setInputNormals(tgt_normals);fpfh.compute(*tgt_fpfhs);cout 原点云特征计算完成 *src_fpfhs endl; cout 目标点云特征计算完成 *tgt_fpfhs endl; }GICP gicp_registration(GICP gicp, PointCloud final_cloud,PointCloud::Ptr cloud_src_o, PointCloud::Ptr cloud_tgt_o) {gicp.setInputSource(cloud_src_o);gicp.setInputTarget(cloud_tgt_o);// 配准时最大迭代次数gicp.setMaximumIterations(50);// 两次变化矩阵之间的差异小于这个阈值时就认为已经收敛停止迭代gicp.setTransformationEpsilon(1e-6);// 对应点之间的最大距离gicp.setMaxCorrespondenceDistance(0.05);// 采用随机采样一致性方法进行配准gicp.setRANSACOutlierRejectionThreshold(1.5);// 最小内点比例。在RANSAC配准方法中当内点的比例小于此值时认为配准失败。gicp.setRANSACIterations(20);// 执行配准并将结果存储在Final中gicp.align(final_cloud);return gicp;} SAC_IA sacia_registration(SAC_IA sac_ia, PointCloud final_cloud,PointCloud::Ptr cloud_src_o, PointCloud::Ptr cloud_tgt_o,FPFH::Ptr src_fpfhs, FPFH::Ptr tgt_fpfhs) {sac_ia.setInputSource(cloud_src_o);sac_ia.setSourceFeatures(src_fpfhs);sac_ia.setInputTarget(cloud_tgt_o);sac_ia.setTargetFeatures(tgt_fpfhs);// 设置SAC-IA配准的参数sac_ia.setMinSampleDistance(0.05f);sac_ia.setMaxCorrespondenceDistance(0.01f);sac_ia.setMaximumIterations(500);// 创建一个空的PointCloud对象来接收结果pcl::PointCloudpcl::PointXYZ final_registration;// 执行配准并将结果存储在final_registration中sac_ia.align(final_registration);return sac_ia; } NDT ndt_registration(NDT ndt, PointCloud final_cloud,PointCloud::Ptr cloud_src_o, PointCloud::Ptr cloud_tgt_o) {// 配置NDTndt.setTransformationEpsilon(0.1);ndt.setStepSize(0.5);ndt.setResolution(2.0);ndt.setMaximumIterations(20);ndt.setInputSource(cloud_src_o);ndt.setInputTarget(cloud_tgt_o);ndt.align(final_cloud);return ndt; }ICP icp_registration(ICP icp, PointCloud final_cloud, PointCloud::Ptr cloud_src_o, PointCloud::Ptr cloud_tgt_o) {icp.setMaximumIterations(50);// 两次变化矩阵之间的差值icp.setTransformationEpsilon(1e-10);// 均方误差icp.setEuclideanFitnessEpsilon(0.01);icp.setInputSource(cloud_src_o);//录入source点云icp.setInputTarget(cloud_tgt_o);//录入target点云icp.align(final_cloud);//最终配准结果return icp; } int main(int argc, char** argv) {//加载点云文件PointCloud::Ptr cloud_src_o(new pcl::PointCloudpcl::PointXYZ);//原点云待配准pcl::io::loadPLYFile(ply/bun_zipper.ply, *cloud_src_o);PointCloud::Ptr cloud_tgt_o(new pcl::PointCloudpcl::PointXYZ);//目标点云pcl::io::loadPLYFile(ply/bun_zipper2.ply, *cloud_tgt_o);clock_t start clock();//下采样pcl::VoxelGridpcl::PointXYZ::Ptr voxel_grid(new pcl::VoxelGridpcl::PointXYZ);downsampling(cloud_src_o, cloud_tgt_o, voxel_grid);创建一个NormalEstimationOMP对象,进行法线计算NormalEstimation ne;Normal::Ptr src_normals(new pcl::PointCloudpcl::Normal);Normal::Ptr tgt_normals(new pcl::PointCloudpcl::Normal);KdTreeT::Ptr tree(new pcl::search::KdTreepcl::PointXYZ());normalestimation(ne, src_normals, tgt_normals, tree, cloud_src_o, cloud_tgt_o);//计算FPFH特征/*FPFHEstimation fpfh;FPFH::Ptr src_fpfhs(new pcl::PointCloudpcl::FPFHSignature33());FPFH::Ptr tgt_fpfhs(new pcl::PointCloudpcl::FPFHSignature33());fpfh_features(fpfh, src_fpfhs, tgt_fpfhs, cloud_src_o, cloud_tgt_o, tree, src_normals, tgt_normals);*/// 点云配准PointCloud::Ptr icp_result(new pcl::PointCloudpcl::PointXYZ);PointCloud final_cloud;ICP icp;ICP reg_p icp_registration(icp, final_cloud, cloud_src_o, cloud_tgt_o);/*NDT ndt;NDT reg_p ndt_registration(ndt, final_cloud, cloud_src_o, cloud_tgt_o);*//*GICP gicp;GICP reg_p gicp_registration(gicp, final_cloud, cloud_src_o, cloud_tgt_o);*///SAC_IA sac_ia;//SAC_IA reg_p sacia_registration(sac_ia, final_cloud, cloud_src_o, cloud_tgt_o, src_fpfhs, tgt_fpfhs);clock_t end clock();cout total time: (double)(end - start) / (double)CLOCKS_PER_SEC s endl;//输出配准所用时间cout ICP has converged: reg_p.hasConverged() score: reg_p.getFitnessScore() std::endl;Eigen::Matrix4f reg_p_trans;// 变换矩阵reg_p_trans reg_p.getFinalTransformation();// 平移向量Eigen::Vector3f translation reg_p_trans.block3, 1(0, 3);// 旋转矩阵Eigen::Matrix3f rotation reg_p_trans.block3, 3(0, 0);// 转换为四元数Eigen::Quaternionf quaternion(rotation);// 使用四元数重新计算欧拉角Eigen::Vector3f euler_angles_rad quaternion.toRotationMatrix().eulerAngles(2, 1, 0);获取欧拉角弧度//Eigen::Vector3f euler_angles_rad rotation.eulerAngles(0, 1, 2);// 将弧度转换为角度Eigen::Vector3f euler_angles_deg euler_angles_rad * 180.0 / M_PI;printinfo(reg_p_trans, rotation, translation, euler_angles_deg, quaternion);//使用创建的变换对未过滤的输入点云进行变换pcl::transformPointCloud(*cloud_src_o, *icp_result, reg_p_trans);visualize_pcd(cloud_src_o, cloud_tgt_o, icp_result);return (0); }这里面有四种点云配准方法ICPNDTGICPSAC-IA其中使用SAC-IA的时候要把fpfh计算的代码解开注释其他算法使用的时候不需要解开fpfh计算的代码提醒下fpfh和SAC-IA计算较为缓慢出结果需要四五分钟 这份配准所需点云文件链接 链接https://pan.baidu.com/s/1QduGSfYcMN2MLRa08e0eSg  提取码wstc  五、保存配置 为了在以后新建项目时不重复进行第三部分的配置可以保存属性表点击visual studio2022的视图下的其他窗口找到属性管理器点击 下方会出现属性管理器的字样点击 然后右键Debug | x64点击添加新项目属性表 随便命个名点击添加我命名为PCL.props 这里就会出现PCL的属性表双击之后重复第三部分的配置即可这个属性表会保存在和你的cpp文件的同级目录下 然后你就可以新建一个项目在新项目中也找到Debug | x64右键添加现有属性表找到我们刚才配置的PCL.props就可以导入我们刚才的配置了 六、未来如果你要用PCL做某些大型项目可能会遇到 fatal error C1128: 节数超过对象文件格式限制: 请使用 /bigobj 进行编译这种问题解决方法 打开该项目的“属性页”对话框单击“C/C”项单击“命令行”属性页在“附加选项”框中键入编译器选项,添加 /bigobj再次编译即可。 在 Visual Studio 中使用 /bigobj 编译选项的主要好处是允许生成更大的对象文件。这是通过扩展 COFFCommon Object File Format的限制来实现的。以下是 /bigobj 选项的一些具体好处 增加节的数量限制 正常情况下COFF 格式的对象文件有限制例如节的数量不能超过 2^16-165535。使用 /bigobj 可以将这个限制提高到 2^32-1约 4.29 亿这对于包含大量代码的大型项目非常有用。 提供更多的符号 对于有大量符号例如函数、变量、模板实例化的代码/bigobj 也提供了更多的符号支持。 处理复杂的模板 使用大量模板特化和模板元编程的 C 代码可能会生成非常大的对象文件。/bigobj 让编译器能够处理这些复杂的模板情况。 适用于大型项目 对于非常大的项目尤其是那些有大量源代码文件或者是由多个库组合而成的项目使用 /bigobj 选项可以避免在编译过程中出现对象文件格式限制的错误。 使用 /bigobj 选项没有显著的缺点除了可能会增加编译后的对象文件大小。然而它确实是解决某些大型或复杂项目导致的对象文件格式限制问题的必要手段。如果你的项目没有遇到相关的编译限制问题那么通常不需要使用这个选项。
http://www.zqtcl.cn/news/308593/

相关文章:

  • 徐州市水利工程建设有限公司网站网站建设技术团队有多重要性
  • 合肥佰瑞网站搜索引擎优化步骤
  • 营销型网站建设亏1广西桂林天气预报15天
  • 想做一个网站平台怎么做公司网站建设费用估计
  • 电商网站开发平台pi netwo网页设计文件下载
  • 南平网站设计笔记本怎么建设网站
  • 舆情分析网站免费人工智能培训班收费标准
  • 青岛网站建设 大公司制作相册视频
  • 什么是网站的域名jquery素材网站
  • 课程网站建设ppt模板百度seo推广
  • 网站建设需要用到什么怎么在电脑上用手机app软件
  • 公司做网站有意义么网站认证必须做么
  • 网站虚拟空间更新缓存php外贸网站建设
  • 河南省建设执业资格注册中心网站门户定制网站建设公司
  • 网站开发比较厉害wordpress中文 插件
  • 文化投资的微网站怎么做个人微信公众号如何推广
  • 单位的网站怎样设计才美观网页设计图片的代码
  • 长沙专业做网站排名济南手机网站定制费用
  • 西安专题门户响应式网站建设系统网站有哪些
  • 山东省建设局网站监理员考试asp.net mvc6电商网站开发实践
  • 做网站需要提供什么资料网站备案是什么意思
  • 河南网站建设及推广东莞百度代做网站联系方式
  • 大型企业网站制作浦东新区做网站
  • 简单大气网站源码织梦怎么用框架实现在浏览器的地址栏只显示网站的域名而不显示出文件名
  • 电子商务型网站建设线上推广营销策划
  • 网站建设管理工作情况的通报网站开发vs设计报告
  • 嘉定网站网站建设公司官网制作
  • 做旅游广告在哪个网站做效果好财经网站建设
  • 网站样式下载网站地图定位用什么技术做
  • 自己做网站怎么做的百中搜优化软件