PCL点云之旅07 - 点云颜色设置

465 阅读1分钟

实现效果

image.png

步骤拆分

  1. 在显示菜单下建立点云颜色改变ACTION
  2. 由于我们上次已经建立了一个QcolorDialog类
  3. 我们通过槽函数唤醒这个类,选择颜色信息
  4. 渲染到点云模型上面去

代码实现

  • 槽函数
QAction *background_action=new QAction("背景颜色设置");
QAction *pointcloud_color_pick_action=new QAction("点云颜色设置");
display_menu->addAction(background_action);
display_menu->addAction(pointcloud_color_pick_action);
  • 选择场景渲染
void MainWindow::pointcloud_color_change(){
    dialog_color_select =new pcl_view_select_color();
    QColor color=dialog_color_select->getColor();
    QColor temp;
    temp.setRgb(143,153,159,255);//防止与背景串色
    if(!cloud.empty() && (color!=temp) )
    {
        //viewer->removeAllPointClouds();
        pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ >slected_color(cloud.makeShared(),
                                            color.redF()*255,color.greenF()*255,color.blueF()*255);
        viewer->updatePointCloud(cloud.makeShared(),slected_color,cloud_name[0]);
        //viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, point_size, cloud_name[0]);

    }
    else
    {
        pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ >slected_color(cloud.makeShared(),255,255,255);
        viewer->updatePointCloud(cloud.makeShared(),slected_color,cloud_name[0]);
    }
    return ;
}