为了让Windows版的Kinect真正生成图像,我已经尝试了几乎所有的方法。我已经下载了Daniel Shiffman的Openkinect库,并按照说明安装了它,但我收到的消息是没有安装kinect设备。我看了看Lion中的系统分析器,我有可用的摄像头和Kinect音频信息。尽管如此,我还是没有成功。我正在运行RGBDepth示例的处理,每次我尝试启用深度图像、RGB图像或IR图像时,都会得到nullpointerexception。我在想,因为程序不能“看到”Kinect,所以图像返回null并发生异常。我该怎么做才能让我的笔记本电脑“看到”Kinect?
另外,在您说要插入12V直流适配器或切换USB端口之前,我已经这样做了。
2011年末在Macbook Pro OSX Lion上运行
发布于 2012-06-26 15:06:36
EDIT 2: Working code:此分支已经包含了我所做更改的一个子集,并实际运行。它是不稳定的,但至少你可以得到一个深度和彩色图像。https://github.com/zarvox/libfreenect/tree/k4w-wip
这种不稳定是由于达尔文上的libusb的同步传输造成的。libfreenect附带的补丁使得libusb不那么不稳定。
主树中不支持Kinect for Windows。你试过这个补丁吗?https://github.com/renewagner/libfreenect/tree/k4w-wip
编辑:这个存储库对于我(我们)拥有的固件版本来说太旧了。
要对摄像头进行检测,您只需要在三个地方更改usb_libusb10.c,在那里它会检查desc.idProduct == PID_NUI_CAMERA。这现在必须是
(desc.idProduct == PID_NUI_CAMERA || desc.idProduct == PID_NUI_CAMERA_K4W);并添加:
#define PID_NUI_CAMERA_K4W 0x02bf还请记住,Windows版Kinect没有马达。您可能需要修改假定其存在的源代码。
然而,这仍然是不够的。USB命令也发生了变化。
在cameras.c中,
static int freenect_fetch_zero_plane_info(freenect_device *dev)
{
freenect_context *ctx = dev->parent;
char reply[0x200];
uint16_t cmd[5] = {0}; // Offset is the only field in this command, and it's 0
// Different reply based on hardware
const int expected_reply_length = dev->kinect_for_windows ? 334 : 322;
int res;
res = send_cmd(dev, 0x04, cmd, 10, reply, expected_reply_length); //OPCODE_GET_FIXED_PARAMS = 4,
if (res != expected_reply_length) {
FN_ERROR("freenect_fetch_zero_plane_info: send_cmd read %d bytes (expected %d)\n", res, expected_reply_length);
return -1;
}请注意,我在freenect_device中添加了一个字段,用于存储是否为Windows版Kinect。
它仍然不是流数据,但这是我所能得到的。
https://stackoverflow.com/questions/11109456
复制相似问题