kh1445291129的专栏

利用OpenCV提取彩色图像的RGB信息,XYZ随机赋值,,创建PCL中的PointCloudXYZRGB形式的点云,并显示出来。

#include <pcl/visualization/cloud_viewer.h>#include <iostream>#include <pcl/io/io.h>#include <pcl/io/pcd_io.h>#include <opencv2/opencv.hpp>int user_data;void viewerOneOff (pcl::visualization::PCLVisualizer& viewer){viewer.setBackgroundColor (0.0, 0.0, 0.0);}void viewerPsycho (pcl::visualization::PCLVisualizer& viewer){user_data = 9;}int main (){pcl::PointCloud<pcl::PointXYZRGB> cloud_a;pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGB>);cv::Mat image = cv::imread("2.jpg");int rowNumber = image.rows;int colNumber = image.cols;cloud_a.width = rowNumber;cloud_a.height = colNumber;cloud_a.points.resize(cloud_a.width*cloud_a.height);cv::Mat_<cv::Vec3b>::iterator it = image.begin<cv::Vec3b>();cv::Mat_<cv::Vec3b>::iterator itend = image.end<cv::Vec3b>();for(unsigned int i=0; i<cloud_a.points.size(); ++i){cloud_a.points[i].x = 1024*rand()/(RAND_MAX+1.0f);cloud_a.points[i].y = 1024*rand()/(RAND_MAX+1.0f);cloud_a.points[i].z = 1024*rand()/(RAND_MAX+1.0f);cloud_a.points[i].r = (int) (*it)[2];cloud_a.points[i].g = (int) (*it)[1];cloud_a.points[i].b = (int) (*it)[0];++it;}*cloud = cloud_a;pcl::visualization::CloudViewer viewer("Cloud Viewer");viewer.showCloud(cloud);viewer.runOnVisualizationThreadOnce (viewerOneOff);viewer.runOnVisualizationThread (viewerPsycho);while (!viewer.wasStopped ()){user_data = 9;}return 0;}原彩色图像:

创建的点云:

泪,一种痛苦的雨滴,不知从什么时候开始已在我的世界下个不停。

kh1445291129的专栏

相关文章:

你感兴趣的文章:

标签云: