使用 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 流=] 然后您可以在另一台计算机上阅读。
我有一台 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 流=] 然后您可以在另一台计算机上阅读。