Я работаю с некоторыми данными, которые другой человек записал с помощью модуля записи OpenNI. К сожалению, они случайно включили зеркальное отображение во время записи, поэтому у меня возникло несколько проблем: 1. отразить глубину с помощью MirrorCap и 2. выровнять глубину с помощью rgb с помощью AlternateViewPointCap. Я попытался получить доступ к этим возможностям из моего узла глубины следующим образом:
xn::Context ni_context;
xn::Player player;
xn::DepthGenerator g_depth;
xn::ImageGenerator g_image;
ni_context.Init();
ni_context.OpenFileRecording(oni_filename, player);
ni_context.FindExistingNode(XN_NODE_TYPE_DEPTH, g_depth);
ni_context.FindExistingNode(XN_NODE_TYPE_IMAGE, g_image);
g_depth.GetMirrorCap().SetMirror(false);
g_depth.GetAlternativeViewPointCap().SetViewPoint(g_image);
Однако это не сработало. Даже после того, как я установил для зеркала значение false, команда IsMirrored () в g_depth по-прежнему возвращается как истина, и alternateviewpointcc не изменяет карту глубины, которую я получаю от генератора.
Я также пытался сделать это через фиктивный узел:
xn::MockDepthGenerator m_depth;
m_depth.CreateBasedOn(g_depth);
m_depth.GetMirrorCap().SetMirror(false);
m_depth.GetAlternativeViewPointCap().SetViewPoint(g_image);
xn::DepthMetaData temp;
g_depth.GetMetaData(temp);
m_depth.SetMetaData(temp);
Это также не влияет на карту глубины, которую я получаю из m_depth. Я был бы признателен за любые предложения по выравниванию информации о цвете и глубине, Неважно, как это происходит. Эти данные трудно записать, и мне нужно использовать их так или иначе.
Мое текущее решение состоит в том, чтобы создать узел фиктивной глубины и перевернуть все пиксели, используя мою собственную процедуру, прежде чем устанавливать его с помощью функции SetMetaData. Затем я использую OpenCV, чтобы создать перспективное преобразование из изображения RGB в изображение глубины, нажимая 4 точки. Затем я применяю это преобразование к кадру rgb, чтобы выровнять значения. Это не идеально, но работает - однако, ради других людей, которым может понадобиться использовать данные, я хочу сделать более правильное решение.