PointCloudPtr loadRGBD2Cloud(string depth_file, string reg_file) { cv::Mat depthMat = reload_32f_image(depth_file); cv::Mat imageMat = cv::imread(reg_file); PointCloudBuilder * builder = new PointCloudBuilder(depthMat, imageMat); PointCloudPtr cloud = builder->getPointCloud(); delete builder; return cloud; }
int main() { cv::Mat depthMat = reload_32f_image("/home/yht/KinectData/depth.bin"); cv::Mat imageMat = cv::imread("/home/yht/KinectData/registered.png"); PointCloudBuilder * builder = new LineFilter(depthMat, imageMat); PointCloudPtr pointCloud = builder->getPointCloud(); pcl::io::savePCDFile("/home/yht/KinectData/sample1.pcd", *pointCloud, true); delete builder; // PointCloudPtr filteredCloud = removeBigPlanes(pointCloud, 0.2, 3, 5); // pcl::VoxelGrid<pcl::PointXYZRGB> grid; // // // ProjectionDivider divider(pointCloud); // double xMin = divider.getXMin(); // double yMin = divider.getYMin(); // double zMin = divider.getZMin(); // // PointCloudPtr subCloud = getSubCloud(pointCloud, xMin +55, xMin + 180, // yMin + 30, yMin + 42, zMin, zMin + 300); // ofstream fxOut("/Users/gjc13/KinectData/planeX.data"); // ofstream fyOut("/Users/gjc13/KinectData/planeY.data"); // ofstream fzOut("/Users/gjc13/KinectData/planeZ.data"); // for(auto point: subCloud->points) // { // double x = point.x; // fxOut << x << endl; // } // for(auto point: subCloud->points) // { // double y = point.y; // fyOut << y << endl; // } // for(auto point: subCloud->points) // { // double z = point.z; // fzOut << z << endl; // } // auto viewer = rgbVis(pointCloud); // while (!viewer->wasStopped()) // { // viewer->spinOnce(100); // boost::this_thread::sleep(boost::posix_time::microseconds(100000)); // } return 0; }