- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个项目处理使用 Kinect(或更可能是其中四个)的视频 session 。现在,我的公司在我们的 VTC session 室使用这些极其昂贵的摄像机。希望是,使用连接在一起的几个 Kinect,我们可以降低成本。计划是让其中四个/五个覆盖 180 度弧度,以便 Kinects 可以看到整个房间/ table (仍然比我们当前的相机便宜很多!)。应用程序将根据餐 table 上的谈话对象选择来自 Kinect 的视频流。计划在理论上很好,但我遇到了一个障碍。
据我所知,无法判断哪个麦克风阵列对应于 Kinect Runtime 对象。我可以使用以下方法获取代表每个 Kinect 的对象:
Device device = new Device();
Runtime[] kinects = new Runtime[device.Count];
for( int i = 0; i < kinects.Length; i ++ )
kinects[i] = new Runtime(i);
var source = new KinectAudioSource();
IEnumerable<AudioDeviceInfo> devices = source.FindCaptureDevices();
foreach( AudioDeviceInfo in device in devices)
{
KinectAudioSource devSpecificSource = new KinectAudioSource();
devSpecificSource.MicrophoneIndex = (short)device.DeviceIndex;
}
Console.WriteLine("Nui{0}: {1}", i, nuis[i].NuiCamera.UniqueDeviceName);
//Nui0: USB\VID_0409&PID_005A\6&1F9D61BF&0&4
//Nui1: USB\VID_0409&PID_005A\6&356AC357&0&3
Console.WriteLine("AudioDeviceInfo{0}: {1}, {2}, {3}", audios.IndexOf(audio), device.DeviceID, device.DeviceIndex, device.DeviceName);
//AudioDeviceInfo0: {0.0.1.00000000}.{1945437e-2d55-45e5-82ba-fc3021441b17}, 0, Microphone Array (Kinect USB Audio)
//AudioDeviceInfo1: {0.0.1.00000000}.{6002e98f-2429-459a-8e82-9810330a8e25}, 1, Microphone Array (2- Kinect USB Audio)
最佳答案
Microsoft Research 提供的 API 实际上并未提供此功能。 Kinect 本质上是多个摄像头和一个麦克风阵列,每个传感器都有一个独特的驱动程序堆栈,因此没有与物理硬件设备的链接。实现这一点的最佳方法是使用 Windows API,通过 WMI 并获取您为 NUI 摄像头和麦克风获得的设备 ID,然后使用 WMI 查找它们连接到的 USB 总线(作为每个 Kinect传感器必须在自己的总线上)然后你就会知道哪个设备匹配什么。这将是一项昂贵的操作,因此我建议您在启动或检测设备时执行此操作,并将信息保留到您知道硬件配置更改或应用程序重置的时间。通过 .NET 使用 WMI 有很好的文档记录,但这里有一篇文章专门讨论了通过 WMI/.NET 的 USB 设备:http://www.developerfusion.com/article/84338/making-usb-c-friendly/ .
关于c# - 将 Kinect 音频与视频相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6583746/
现在我正在尝试实现 flash programming specification对于 PIC32MX。我正在使用 PIC32MX512L 和 PIC32MX512H。 PIC32MX512L最终必须
我是一名优秀的程序员,十分优秀!