OpenNI2 には Kinect for Windows SDK のように、接続されているデバイスを列挙するAPIが追加されました。
#include <iostream>#include <OpenNI.h>
void main()
{
try {
openni::OpenNI::initialize();
openni::Array<openni::DeviceInfo> deviceInfoList;
openni::OpenNI::enumerateDevices( &deviceInfoList );
std::cout << deviceInfoList.getSize() << std::endl;
for ( int i = 0; i < deviceInfoList.getSize(); ++i ) {
std::cout << deviceInfoList[i].getName() << ", "
<< deviceInfoList[i].getVendor() << ", "
<< deviceInfoList[i].getUri() << ", "
<< std::endl;
}
}
catch ( std::exception& ex ) {
std::cout << ex.what() << std::endl;
}
}
openni::OpenNI::enumerateDevices()で接続されているデバイスを取得します。openni::DeviceInfoに情報が入るので列挙してみます。openni::DeviceInfo::getName()にデバイス名(KinectとかPS1080(Xtion)とか)、openni::DeviceInfo::getVendor()にベンダー名(MicrosoftとかPrimeSenseとか)、openni::DeviceInfo::getUri()に登録名が入っています。
任意のデバイスを使う場合は、openni::DeviceInfo::getUri()を利用します。