Kinect V1 и OpenNI
У меня есть код для записи данных с моего сенсора Asus с использованием OpenNI2. Это работает нормально, но когда я пытаюсь использовать Microsoft Kinect V1, я получаю следующую ошибку после вызова
`if (device.getSensorInfo(openni::SENSOR_COLOR) == NULL || device.getSensorInfo(openni::SENSOR_DEPTH) == NULL)
{
cerr << "No information from sensor" << endl;
getchar();
}`
“./bin/RecordData” terminated by signal SIGSEGV (Address boundary error)
Я знаю некоторых людей, которые используют OpenNI2 и Kinect V1, поэтому я думаю, что это должно работать.
Когда я звоню
device.getDeviceInfo().getName();
я получил PS1080
для Asus, но для Kinect он пуст.
lsusb
дает
Bus 002 Device 013: ID 045e:02ae Microsoft Corp. Xbox NUI Camera
Bus 002 Device 011: ID 045e:02b0 Microsoft Corp. Xbox NUI Motor
Bus 002 Device 012: ID 045e:02ad Microsoft Corp. Xbox NUI Audio
Вот мой код:
int main(int argc, char **argv)
{
COUNTER = 0;
path = "/mint/erikbylow/DataSets/Albedo/BigVas/Test2/";
openni::Status rc = openni::STATUS_OK;
openni::Device device, device2;
openni::VideoStream depth, color, depth2, color2;
const char *deviceURI = openni::ANY_DEVICE;
rc = openni::OpenNI::initialize();
if (rc != openni::STATUS_OK)
{
cout << "After initialization: " << openni::OpenNI::getExtendedError() << endl;
getchar();
return 1;
}
device.open(deviceURI);
if (rc != openni::STATUS_OK)
{
cout << "Could not open device, exiting" << endl;
openni::OpenNI::shutdown();
getchar();
return 1;
}
// rc = device.setDepthColorSyncEnabled(false);
// if (rc != openni::STATUS_OK)
// {
// cout << "Unable to synchronize depth and color cameras" << endl;
// }
if (device.getSensorInfo(openni::SENSOR_COLOR) == NULL || device.getSensorInfo(openni::SENSOR_DEPTH) == NULL)
{
cerr << "No information from sensor" << endl;
getchar();
}
initialize(device, depth, color);
cout << "This Works" << endl;
}