Python 三维点云可视化是不同的

Python 三维点云可视化是不同的,python,point-cloud-library,point-clouds,Python,Point Cloud Library,Point Clouds,我想在点云上做一些后处理, 当我尝试使用Axis3D绘制点云时,我得到了点云的不同外观,它沿着轴拉伸。 当我尝试另一个点云视图时,我得到了完全不同的网格 这是我的密码 和图片 这是数据集 试着制作一个非常小的云(可能是手工制作),并用它进行调试。如果问题只针对特定的云,则必须将其包含在问题中,以便人们可以尝试重现问题。不要期望人们只是盯着你的代码看,然后突然看到解决方案。两者都具有相同的轴缩放吗?由于matplotlib在y轴上显示的尺寸比x轴高得多,并且3D绘图似乎使用了等轴缩放(我猜是这样

我想在点云上做一些后处理, 当我尝试使用Axis3D绘制点云时,我得到了点云的不同外观,它沿着轴拉伸。 当我尝试另一个点云视图时,我得到了完全不同的网格

这是我的密码 和图片

这是数据集


试着制作一个非常小的云(可能是手工制作),并用它进行调试。如果问题只针对特定的云,则必须将其包含在问题中,以便人们可以尝试重现问题。不要期望人们只是盯着你的代码看,然后突然看到解决方案。两者都具有相同的轴缩放吗?由于matplotlib在y轴上显示的尺寸比x轴高得多,并且3D绘图似乎使用了等轴缩放(我猜是这样看正方形)@qd codie不,它不具有相同的缩放。。我该如何解决这个问题。我将测试数据包括在question@wizzup我包括的数据集是ax.axis('equal'),请参见此处:。但在3D中,您需要使用
ax手动设置。设置\u xlim(min,max)
等。尝试制作一个非常小的云(可能是手动),并使用它进行调试。如果问题只针对特定的云,则必须将其包含在问题中,以便人们可以尝试重现问题。不要期望人们只是盯着你的代码看,然后突然看到解决方案。两者都具有相同的轴缩放吗?由于matplotlib在y轴上显示的尺寸比x轴高得多,并且3D绘图似乎使用了等轴缩放(我猜是这样看正方形)@qd codie不,它不具有相同的缩放。。我该如何解决这个问题。我将测试数据包括在question@wizzup我包括的数据集是ax.axis('equal'),请参见此处:。但在3D中,您需要使用
ax手动设置。set_xlim(min,max)
等。
def main():

    #process first point cloud
    f3data = np.loadtxt(r'c:\ahmed\Waltersdorf_F3.csv', delimiter=',',
                        dtype=[('id', np.str_, 20), ('x1', np.float32), ('x2', np.float32), ('x3', np.float32),
                               ])


    ptcloud_1 = np.vstack((f3data['x1'], f3data['x2'], f3data['x3'])).transpose()



    pc_1 = pcl.PointCloud.PointXYZ(ptcloud_1)
    X = np.vstack((pc_1.x, pc_1.y, pc_1.z)).transpose()

    import matplotlib.pyplot as plt

    import mpl_toolkits.mplot3d as m3d

    ax = m3d.Axes3D(plt.figure())
    ax.scatter3D(*X.T)
    plt.show()

    # pc_1 = pclpy.radius_outlier_removal(pc_1, search_radius=1.0, min_neighbors=4)
    #plotScatterRot3(f3rot)
    pc_type = utils.get_point_cloud_type(pc_1)
    seg = getattr(pcl.segmentation.SACSegmentation, pc_type)()
    seg.setOptimizeCoefficients(True)
    model = getattr(pcl.sample_consensus, "SACMODEL_" + 'PLANE'.upper())
    seg.setModelType(model)
    seg.setMethodType(pcl.sample_consensus.SAC_RANSAC)
    seg.setDistanceThreshold(1)
    seg.setInputCloud(pc_1)
    coefficients = pcl.ModelCoefficients()
    inliers = pcl.PointIndices()
    arr = np.ndarray(shape=(3,1), dtype= np.float32)
    arr[0] = 0
    arr[1] = 0
    arr[2] = 1
    seg.setAxis(arr)
    seg.segment(inliers, coefficients)

    inla = pc_1.xyz[inliers.indices]

    cloud_filtered = pcl.PointCloud.PointXYZ(inla)
    X = np.vstack((cloud_filtered.x, cloud_filtered.y, cloud_filtered.z)).transpose()


    pca = decomposition.PCA(n_components=3)
    pca.fit(X)
    X = pca.transform(X)
    final_cloud = pcl.PointCloud.PointXYZ(X)

    pcl.io.savePCDFile("original_first.txt", final_cloud)

    import mpl_toolkits.mplot3d as m3d
    ax = m3d.Axes3D(plt.figure())
    ax.scatter3D(*X.T)
    plt.show()

    pptk.viewer(X)