我正在寻找关于VideoFrame
我试图转换为 opencv 的 openni 对象格式的一般描述/规范Mat
。
是否有一些官方网站/文档可用?我在ros.org上找到了以下描述VideoFrameRef
andOniFrame
类的内容。但首先这似乎与 libfreenect 有关,其次我没有找到有关框架结构的任何具体信息(如尺寸、通道等)。
因此,任何链接或描述将不胜感激!
下面的代码是我正在试验的一个片段。内的转换部分while loop
只产生一个黑色视频流。
import sys
import numpy as np
import cv2
from openni import openni2
from openni import _openni2 as c_api
openni2.initialize("./Redist")
device = openni2.Device.open_any()
ir_stream = device.create_ir_stream()
ir_stream.set_video_mode(c_api.OniVideoMode(pixelFormat = c_api.OniPixelFormat.ONI_PIXEL_FORMAT_GRAY16, resolutionX = 320, resolutionY = 240, fps = 30))
ir_stream.start()
while(True):
frame = ir_stream.read_frame()
frame_data = frame.get_buffer_as_uint16()
img = np.frombuffer(frame_data, dtype=np.uint16)
img.shape = (1, 240, 320)
img = np.concatenate((img, img, img), axis=0)
img = np.swapaxes(img, 0, 2)
img = np.swapaxes(img, 0, 1)
cv2.imshow("image", img)
if cv2.waitKey(1) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
ir_stream.stop()
openni2.unload()