如何在C++上可视化三维点

How can Visualize 3D points on C++

本文关键字:可视化 三维 C++      更新时间:2023-10-16

我正在使用Opencv和PCL开发一个3D重建项目。在我的代码中,体素由cv::Point3f坐标表示

体素.hpp

    class Voxel
    {
    private:
//3D Coordinates of voxel
        cv::Point3f coordinates;
    public:
//constructor of voxel
        Voxel(float x, float y, float z);
        void drawVoxel();
    };

体素.cpp

//implement constructor
Voxel::Voxel(float x, float y,float z)
{
    coordinates.x=x;
    coordinates.y=y;
    coordinates.z=z;
}
//draw one voxel (3D point).
void Voxel::drawVoxel()
 {
        pcl::PointXYZ pt;
        pt.x=coordinates.x;
        pt.y=coordinates.y;
        pt.z=coordinates.z;
        pcl::visualization::CloudViewer viewer ("draw voxel");
        viewer.showCloud (pt);
    }

drawVoxel()函数的最后一行出现错误。我该怎么解决?

尝试这样更改:

不要在draw函数中创建云和查看器。将云作为参数传递:

void Voxel::drawVoxel( pcl::PointXYZ * pt )
{
    //pcl::PointXYZ pt;
    pt->x=coordinates.x;
    pt->y=coordinates.y;
    pt->z=coordinates.z; 
}

使用所有体素创建云后,绘制它:

pcl::PointXYZ  pt;
Voxel v1(1,2,3);
v.drawVoxel(&pt);
pcl::visualization::CloudViewer viewer ("draw voxel");
viewer.showCloud (pt);