【问题标题】:pointcloud data to mat data点云数据到垫子数据
【发布时间】:2015-06-08 17:25:00
【问题描述】:

我必须将 ply 数据转换为 mat 数据。为此,我使用了 pcl 的 plyreader 并将其转换为点云,现在我的下一步是将其从点云转换为 mat 数据。 我猜我从 plyreader 获得的点云是杂乱无章的。我一直在尝试提取点云的 xyz 值,然后将其复制到数据中。

pcl::PointCloud::Ptr 云(新 pcl::PointCloud); // 创建一个新的点云 (POINTXYZ)

pcl::PLYReader reader;               
reader.read(filename,*cloud);         // read the ply file

cv::Mat output;
//...
output = cv::Mat(1,cloud->points.size(),CV_32FC3);
for(size_t i=0; i<cloud->points.size();++i)
{
    int m = cloud->points[i].x;
    int n = cloud->points[i].y;
    int l = cloud->points[i].z;

    float x0;
    float x1;
    float x2;

    output.at<cv::Vec3f>(x0,x1,x2)= cv::Vec3f(m,n,l);

}

我知道这是错误的。我找到了一篇关于此的帖子,但那是针对有组织的云链接在这里 -->

访问[点云到垫子]

Coversion from PointCloud to Mat

我是这个领域的新手。如果有人知道或可以提供帮助!!!

提前致谢

【问题讨论】:

    标签: point-cloud-library opencv-mat


    【解决方案1】:
    cv::Size sz;
    sz= cv::Size(cloud->width,cloud->height);
    
    
    cv::Mat output(sz,CV_32FC3);
    cvWaitKey(50);
    
    
    
    for (int j=0; j<output.rows;++j)
    {
         for(int i= 0; i<output.cols;++i)
          {
        output.at<cv::Vec3f>(1,i)[0] = cloud->points[i].x;
        output.at<cv::Vec3f>(1,i)[1] = cloud->points[i].y;
        output.at<cv::Vec3f>(1,i)[2] = cloud->points[i].z;
    
          }}
    

    代码中没有错误并且运行正常,但仍然在 cv::Mat 输出,值没有复制并给出一些荒谬的结果。有谁知道错误或如何仅将输出值作为 cvmat 数据获取。

    【讨论】:

    • 已解决....只需要在定义 cvmat 时添加零,以便它可以覆盖值。 cv::Mat 输出;输出 = cv::Mat::zeros(1,cloud->points.size(),CV_32FC3);
    【解决方案2】:

    应该是:

    output.at<cv::Vec3f>(1,i)[0] = cloud->points[i].x; //(1,i) is (row,col)
    output.at<cv::Vec3f>(1,i)[1] = cloud->points[i].y; // [1] is y float
    output.at<cv::Vec3f>(1,i)[2] = cloud->points[i].z;
    

    【讨论】:

    • 是的。我昨天也做了同样的事情。但明天将尝试构建它。谢谢您的帮助。将更新任何结果。 :)
    • :在此语句处初始化循环后,它正在创建一个异常 ' output.at<:vec3f>(1,i)[0] = cloud->points[i] 。X; '
    猜你喜欢
    • 2019-01-16
    • 2022-10-24
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2018-01-06
    • 1970-01-01
    相关资源
    最近更新 更多