Orbbec 和 OpenNi2:使用默认的 DeviceOpen:找不到设备
Orbbec and OpenNi2: DeviceOpen using default: no devices found
我通过 USB 连接了一个 Orbbec Astra 深度传感器,设备管理器显示驱动程序已正确安装。
我已经从 orbbec.com 下载了 "Astra & OpenNI2" 包,但只分别安装了 SensorDriver_V4.3.0.4.exe
和我从 structure.io 下载的 OpenNI2 包。
我得到了以下代码,编译得很好。但是当 运行 它 returns Device open failed: DeviceOpen using default: no devices found
。
当 运行 NiViewer.exe
我做错了什么?是否需要一些额外的驱动程序?
#include "stdafx.h"
#include <OpenNI.h>
int main()
{
openni::Status rc = openni::STATUS_OK;
openni::Device device;
openni::VideoStream depth, color;
const char* deviceURI = openni::ANY_DEVICE;
rc = openni::OpenNI::initialize();
printf("After initialization:\n%s\n", openni::OpenNI::getExtendedError());
rc = device.open(deviceURI);
if (rc != openni::STATUS_OK)
{
printf("Device open failed: %s\n", openni::OpenNI::getExtendedError());
openni::OpenNI::shutdown();
return 1;
}
return 0;
}
我 "solved" 通过卸载我从 structure.io 下载的 OpenNI2 软件包并使用 Orbbec 驱动程序附带的 OpenNI2 文件来解决这个问题。
仍然不知道为什么我不能使用普通的 OpenNI2 包...
您只需将 3 个文件(在 ORBBEC 的 zip 自定义 OpenNI 2.3 中提供)复制到您已安装的 OPENNI2 2.2 SDK 文件夹结构中(类似于 zzzz\OpenNI2\Drivers:
- xxxx\OpenNI2\Drivers\orbbec.ini xxxx\OpenNI2\Drivers\orbbec.lib xxxx\OpenNI2\Drivers\orbbec.dll
基本上这样做,您通过添加 "driver" 来扩展 OPENNI2 管理的相机的数量。当前默认安装文件夹已包含以下内容:
- Kinect.dll,
Onifile.dll,
PS1080.ini
PS1080.lib
PS1080.dll
PSLink.ini
PSLink.lib
PSLink.dll
(所以在那里添加 3 个 orbbec 文件)
重要提示:如果您从命令行启动 niviewer.exe,它将首先搜索相对子文件夹 \OpenNI2\drivers 子文件夹(因此在这种情况下更新此文件夹),否则将查找此子文件夹默认安装环境参数(OPENNI2_REDIST 或 OPENNI2_REDIST64)中的文件夹,具体取决于您的安装。
所以保重!
希望对你有帮助。
我通过 USB 连接了一个 Orbbec Astra 深度传感器,设备管理器显示驱动程序已正确安装。
我已经从 orbbec.com 下载了 "Astra & OpenNI2" 包,但只分别安装了 SensorDriver_V4.3.0.4.exe
和我从 structure.io 下载的 OpenNI2 包。
我得到了以下代码,编译得很好。但是当 运行 它 returns Device open failed: DeviceOpen using default: no devices found
。
当 运行 NiViewer.exe
我做错了什么?是否需要一些额外的驱动程序?
#include "stdafx.h"
#include <OpenNI.h>
int main()
{
openni::Status rc = openni::STATUS_OK;
openni::Device device;
openni::VideoStream depth, color;
const char* deviceURI = openni::ANY_DEVICE;
rc = openni::OpenNI::initialize();
printf("After initialization:\n%s\n", openni::OpenNI::getExtendedError());
rc = device.open(deviceURI);
if (rc != openni::STATUS_OK)
{
printf("Device open failed: %s\n", openni::OpenNI::getExtendedError());
openni::OpenNI::shutdown();
return 1;
}
return 0;
}
我 "solved" 通过卸载我从 structure.io 下载的 OpenNI2 软件包并使用 Orbbec 驱动程序附带的 OpenNI2 文件来解决这个问题。
仍然不知道为什么我不能使用普通的 OpenNI2 包...
您只需将 3 个文件(在 ORBBEC 的 zip 自定义 OpenNI 2.3 中提供)复制到您已安装的 OPENNI2 2.2 SDK 文件夹结构中(类似于 zzzz\OpenNI2\Drivers:
- xxxx\OpenNI2\Drivers\orbbec.ini xxxx\OpenNI2\Drivers\orbbec.lib xxxx\OpenNI2\Drivers\orbbec.dll
基本上这样做,您通过添加 "driver" 来扩展 OPENNI2 管理的相机的数量。当前默认安装文件夹已包含以下内容:
- Kinect.dll, Onifile.dll, PS1080.ini PS1080.lib PS1080.dll PSLink.ini PSLink.lib PSLink.dll
(所以在那里添加 3 个 orbbec 文件)
重要提示:如果您从命令行启动 niviewer.exe,它将首先搜索相对子文件夹 \OpenNI2\drivers 子文件夹(因此在这种情况下更新此文件夹),否则将查找此子文件夹默认安装环境参数(OPENNI2_REDIST 或 OPENNI2_REDIST64)中的文件夹,具体取决于您的安装。 所以保重! 希望对你有帮助。