测试环境:
pcl==1.13.0
python-pcl==0.3.1
python==3.7
代码:
# -*- coding: utf-8 -*- from __future__ import print_function import numpy as np import pcl def main(): cloud = pcl.load('./examples/pcldata/tutorials/table_scene_mug_stereo_textured.pcd') # pcl::CropBox<PointXYZI> clipper; # clipper.setInputCloud(cloud); clipper = cloud.make_cropbox() # pcl::PCDWriter writer; # pcl::PointCloud<PointXYZI>::Ptr outcloud; outcloud = pcl.PointCloud() # clipper.setTranslation(Eigen::Vector3f(pose->tx, pose->ty, pose->tz)); # clipper.setRotation(Eigen::Vector3f(pose->rx, pose->ry, pose->rz)); # clipper.setMin(-Eigen::Vector4f(tracklet->l/2, tracklet->w/2, 0, 0)); # clipper.setMax(Eigen::Vector4f(tracklet->l/2, tracklet->w/2, tracklet->h, 0)); # clipper.filter(*outcloud); tx = 0 ty = 0 tz = 0 clipper.set_Translation(tx, ty, tz) rx = 0 ry = 0 rz = 0 clipper.set_Rotation(rx, ry, rz) minx = -1.5 miny = -1.5 minz = 2 mins = 0 maxx = 3.5 maxy = 3.5 maxz = 3 maxs = 0 clipper.set_MinMax(minx, miny, minz, mins, maxx, maxy, maxz, maxs) outcloud = clipper.filter() pcl.save(outcloud, "test.pcd") # stringstream outfilename; # outfilename << outfile << tracklet->objectType << i << ".pcd"; # if(!outcloud->empty()){ # cout << "Found "<<outcloud->size() << " points, writing to " << outfilename.str() << endl; # writer.write<PointXYZI> (outfilename.str(), *outcloud, false); # }else{ # cerr << "Couldn't find points for tracklet" << tracklet->objectType << i << endl; # } if __name__ == "__main__": # import cProfile # cProfile.run('main()', sort='time') main()