2

私がやりたいことは、xbox360 kinect からストリーミングされたデータをリアルタイムで視覚化することです。

基本的に、データから点群を作成し、それを視覚化しています。私が持っているコードは機能していますが、本当に遅いです。

基本的に、このコードは、kinect から受信したポイント クラウドを追加します。別の点群が受信されるたびに、前の点群が削除され、新しい点群が追加されます。

これを行うより良い方法はありますか?より高いフレームレートではるかに応答性が高いもの

mat = rendering.Material()  
        mat.base_color = [
            0,
            0,
            0, 1.0
        ]
        mat.shader = "defaultLit"
        pcl = o3d.geometry.PointCloud()
# This line recieves the data from the kinect in the format [x,y,z,r,g,b]
        pcl.points = o3d.utility.Vector3dVector(kinect.streamCloud())
        self.scene.scene.remove_geometry("kinect")
        self.scene.scene.add_geometry("kinect", pcl, mat)

これは、kinect からデータをストリーミングするためのコードです。

def streamCloud():
    depth = freenect.sync_get_depth()
    pcl = np.zeros(shape=(307200,3))
    c = 0
    for i in range(480):
        for j in range(640):
            z = depth[0][i,j]
            #z = 1.0 / (d[i,j] * -0.0030711016 + 3.3309495161)
            #z = depth[0][i,j].astype(np.uint8)
            #x = (i - cx) * z / fx
            x = j
            y = i
            #y = (j - cy) * z / fy
            pcl[c] = [x,y,z]
            c = c+1
    return pcl
4

1 に答える 1