如何在C ++上可视化3D点

时间:2015-12-09 22:30:10

标签: c++ opencv point-cloud-library

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

表示

Voxel.hpp

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

Voxel.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()函数的最后一行收到错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

尝试改变如下:

不要在绘图功能中创建云和查看器。将云作为参数传递:

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);