OpenNI 레코더 모듈을 사용하여 다른 사람이 기록한 일부 데이터로 작업하고 있습니다. 불행히도, 그들은 녹음 중에 실수로 미러링 된 기능을 켜기 때문에 MirrorCap을 사용하여 깊이를 미러링하고 AlternateViewPointCap을 사용하여 깊이를 rgb와 정렬합니다. 내 깊이 노드에서 다음과 같이 이러한 기능에 액세스하려했습니다.AlternateViewPointCap 또는 MirrorCap을 재생에서 변경할 수 있습니다.
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로 설정 한 후에도 g_depth의 IsMirrored() 명령은 여전히 true로 반환되고 alternateviewpointcap은 생성기에서받은 깊이 맵을 변경하지 않습니다.
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를 사용하여 사용자가 4 점을 클릭하게하여 RGB 이미지에서 심도 이미지로 원근 변환을 만듭니다. 그런 다음이 변환을 rgb 프레임에 적용하여 값을 정렬합니다. 완벽하지는 않지만 작동합니다. 그러나 데이터를 사용해야하는 다른 사람들을 위해 더 적절한 수정을하고 싶습니다.