使用 python 访问另一台计算机的 OpenNI 相机设备

Accessing to a different computer's OpenNI camera device using python

我有一台 ASUS Xtion Pro-Live 相机。它连接到 raspberry pi。我写了一个 python 代码,它从相机抓取帧,显示并保存。

def get_frames():
    capture = cv2.VideoCapture(cv.CV_CAP_OPENNI)
    capture.set(cv.CV_CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE, cv.CV_CAP_OPENNI_VGA_30HZ)

    while(True):
            if not capture.grab():
                print "Unable to Grab Frames from camera"
                break
            okay, color_image = capture.retrieve(0, cv.CV_CAP_OPENNI_BGR_IMAGE)
            if not okay:
                print "Unable to retrieve Color Image from device"
                break

            cv2.imshow("rgb camera", color_image)
            name = "images/" + str(time.time()) + ".png"
            cv2.imwrite(name, color_image)
            if cv2.waitKey(10) == 27:
                break

    capture.release()

我想在我的电脑上使用类似的代码。但在这种情况下,基本上我需要访问 raspberry pi,并使用连接到 raspberry pi 的相机。我需要以类似的方式从摄像头获取实时视频数据,并在我的代码中使用它。

我怎样才能做到这一点?

看来您只使用了 RGB 流,数据量应该不是很大。如果您打算流式传输 depth+RGB,您应该在将数据发送到网络之前寻找一种压缩数据的方法,然后在另一端将其解压缩。

我记得这是kinect问世时人们一直在解决的问题。 例如,查看 Fabrizio Pece 关于 Adapting standard video codecs for depth streaming 的论文 (pdf)。 你应该能找到类似的论文和实现。

如果您对流深度不感兴趣并且只使用 RGB,更像是网络摄像头,我想有 python 库可以让您从 [=17] 创建 HTTP 或 RTP 流=] 然后您可以在另一台计算机上阅读。