Azure Kinect 使用记录 (二)

Azure Kinect 使用记录 (二)

20211118 - 占坑

因项目需要,得用Azure Kinect以及它的SDK进行开发,在这里记录下心得体会,不定时更新

一、多机位同步

1.1 Timecode

这里就必须了解一下时间码 (aka Time code) 。时间码这种东西是面向特定人群的,例如影视拍摄,所以我又成门外汉了doge。简单来说,就是每帧的时刻,比如第一帧是 00 : 00 : 00 00:00:00 00:00:00,第二帧就是 00 : 00 : 02 00:00:02 00:00:02(这里我乱写的,这是可以算出来的)。

然后呢?这就会出现一个问题,因为机器的内部时钟是不一样的,我认为的12点不是你认为的12点。所以拍出来的东西有可能是对不上的,即虽然大家都是12点,但我拍到的是我在吃饭,你拍到的是我在喝水。

那该怎么办呢,这里有两种技术,一是时码器 (TC generator),两台机器的内部时钟不一致,我就提供一个一致的时钟不就好了,所以TC generator能让两台机器拍出来的帧的时间是绝对一一对应的,例如机位一拍出来的 T T T帧与机位二拍出来的 T T T帧是同一时刻的。二是Genlock,是存在于相机内部的,能够让各个机位的快门帘同时放下,也是需要一个外部设备提供脉冲信号,让Genlock工作。

在这里插入图片描述

这里贴一个科普视频,我感觉挺好的,【拍摄利器】Timecode system 时码器 测评 from Bilibili,这个图也是出自于此。

而Kinect这里用耳机线来同步,也是同样的道理。

1.2 Kinect 时码同步

这里是官方中文教程,点我,里面提到了两种主从 (aka, master-slave) 配置,就是说,按照master的时间码来录制视频。Out是Master,In是Slave。
在这里插入图片描述
把外壳拆开接上就好(包装里面是有一个小快拆扳手的,拆包装的时候别弄丢了)。

这里需要注意一点(三点)的就是:

  • 耳机线不能长于10米
  • usb必须接3.0的口,而且
    • 无源线不能长于1.5m
    • 有源线就无所谓了,甚至还可以供电
    • 要用pci usb卡,usb hub什么的就不要来了,这里就是计算机组成原理的基本知识了,大概就是,水管无论分多少,它的源头都是固定的
  • 可能需要关闭自动曝光

1.3 上机测试

把设备正确接上后,打开Azure Kinect Viewer,需要看到所有启用的设备,如下图所示。
在这里插入图片描述
然后随便选一个打开,如下图,在红框中可以看到In / Out中的Out是选上的,也就是说,这个设备是Master,这时需要再打开一个Azure Kinect Viewer,选择另一个Slave,如下图,需要先操作Slave,再操作Master。
在这里插入图片描述

另起一个Azure Kinect Viewer可以发现,在线设备就只有Slave一个了,打开设备后,如下图,可以看到这个Slave设备的In / Out中的In是选上的,因此分别将Slave使用的Sub和Master使用的Master依次选中,然后先启用Slave,可以看到没有画面,它在下方黄字也提示会没有画面的,然后再启用Master,就可以看到画面了。
在这里插入图片描述

1.4 录制同步视频

这里有录制教程,点我,这里把命令行的选项全部贴出来。

k4arecorder [options] output.mkv

 Options:
  -h, --help              Prints this help
  --list                  List the currently connected K4A devices
  --device                Specify the device index to use (default: 0)
  -l, --record-length     Limit the recording to N seconds (default: infinite)
  -c, --color-mode        Set the color sensor mode (default: 1080p), Available options:
                            3072p, 2160p, 1536p, 1440p, 1080p, 720p, 720p_NV12, 720p_YUY2, OFF
  -d, --depth-mode        Set the depth sensor mode (default: NFOV_UNBINNED), Available options:
                            NFOV_2X2BINNED, NFOV_UNBINNED, WFOV_2X2BINNED, WFOV_UNBINNED, PASSIVE_IR, OFF
  --depth-delay           Set the time offset between color and depth frames in microseconds (default: 0)
                            A negative value means depth frames will arrive before color frames.
                            The delay must be less than 1 frame period.
  -r, --rate              Set the camera frame rate in Frames per Second
                            Default is the maximum rate supported by the camera modes.
                            Available options: 30, 15, 5
  --imu                   Set the IMU recording mode (ON, OFF, default: ON)
  --external-sync         Set the external sync mode (Master, Subordinate, Standalone default: Standalone)
  --sync-delay            Set the external sync delay off the master camera in microseconds (default: 0)
                            This setting is only valid if the camera is in Subordinate mode.
  -e, --exposure-control  Set manual exposure value (-11 to 1) for the RGB camera (default: auto exposure)

那么我该怎么录个多机位同步视频呢,参考教程,大概是这样的命令,这里就是提供一个示例。

.\k4arecorder.exe --list
.\k4arecorder.exe --device 1 -l 5 --external-sync Subordinate --imu OFF output_1.mkv
或者
.\k4arecorder.exe --device 1 --external-sync sub -e -8 -r 5 -l 10 sub1.mkv
以及
.\k4arecorder.exe --device 0 --external-sync master -e -8 -r 5 -l 10 master.mkv

在这里插入图片描述

然后用Azure Kinect Viewer就可以查看了。它这个MKV内部封装了深度等信息,所以这个录出来的文件就有点大了。
在这里插入图片描述

这里有个视频,应该是我的下一步目标:Azure Kinect calibration with multiple cameras.,看起来就是通过人体骨骼以及自带的imu来校准kinect在unity世界坐标系下的相应位置。

二、Openpose测试

未完待续

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Unity3D是一种广泛使用的游戏引擎,支持多种平台的开发。为了提供更多的现实体验,Unity3D可以与Azure Kinect结合使用,将其作为摄像头来获取深度图像、颜色图像、体感数据等信息。 Azure Kinect是一款由微软公司推出的深度学习技术和人体跟踪功能的设备,其可以实现对房间、建筑物、道路、汽车等三维场景的深度感知。在Unity3D中,使用Azure Kinect作为摄像头可以实现真实的空间交互效果和全方位视觉体验。 使用Azure Kinect时,需要首先设置好Kinect传感器组件,并启用它们获取深度和颜色图像等信息。然后在Unity3D中建立相应的场景和游戏元素,并将Azure Kinect中获取的图像和数据应用到场景中。 在使用中需要注意的是,Azure Kinect使用需要专业的硬件支持和软件开发技术,因此操作起来稍微复杂一些。同时,Kinect传感器的分辨率和帧率等也会影响到游戏体验的流畅度和真实感。 总的来说,Unity3D使用Azure Kinect当摄像头可以实现更加真实的空间交互效果和全方位视觉体验,是游戏开发、虚拟现实等领域探索的重要方向。 ### 回答2: Unity3D是一款流行的游戏引擎,支持多种平台和操作系统,包括PC、移动设备和虚拟现实头戴式显示器。Azure Kinect作为一个深度摄像头,可以检测人体骨架、面部表情、声音等信息。在Unity3D中使用Azure Kinect作为摄像头可以为游戏和交互应用带来更丰富的体验。 首先,使用Azure Kinect连接Unity3D需要安装Azure Kinect Sensor SDK和Unity Plugin。SDK包含了驱动程序和API,可以访问深度、彩色、红外图像和声音等传感器数据。Unity Plugin则提供了一个Unity3D接口和样例代码,方便开发者使用和调试。 其次,Azure Kinect可以在Unity3D中实现很多功能。基于深度数据可以进行姿态检测、手势识别、人脸识别等应用。使用声音数据可以实现语音交互、语音识别、语音合成等应用。而彩色图像和红外图像可以帮助生成更真实的虚拟现实场景和情境。 最后,Azure Kinect也可以与其他插件、工具或库结合使用,例如TensorFlow、OpenCV、ROS等等,扩展应用范围和实现更高级的功能。Azure Kinect作为一个开源的硬件平台,吸引了众多开发者和创客们的加入和支持。 综上所述,使用Azure Kinect作为Unity3D的摄像头,可以为游戏、教育、医疗等领域带来更多的可能性和创新。 ### 回答3: Unity3D是一款应用广泛的游戏开发引擎,它可以与各种设备和技术进行集成,以实现更复杂的游戏和交互体验。Azure Kinect是一款由Microsoft开发的深度相机设备,它使用红外线和RGB相机来收集环境和物体的三维数据。现在,Unity3D可以使用Azure Kinect作为摄像头来捕捉玩家的动作和环境的数据。 如果想要在Unity3D中使用Azure Kinect,首先需要在开发计算机上安装Azure Kinect SDK以及对应的Unity插件。然后可以编写脚本来控制Azure Kinect设备,捕获RGB图像、深度图像、姿态和Motion Capture数据。在Unity3D中,这些数据可以用来创建虚拟人物、场景和游戏元素,以及实现交互动作和手势识别。 使用Azure Kinect作为Unity3D的摄像头,可以帮助开发者更好地捕捉现实环境中的数据,使游戏和交互应用更加智能化、自然化和沉浸式。此外,结合Azure Kinect的其他功能,如语音识别、人脸识别和动作捕捉,将有助于开发更加丰富和个性化的应用程序。因此,Unity3D使用Azure Kinect作为摄像头将是未来游戏和交互开发的一个重要趋势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值