【发布时间】:2013-07-30 10:56:57
【问题描述】:
我正在使用 OpenNI 和 OpenCV(但没有支持 openni 的最新代码)。如果我只是将深度通道发送到屏幕 - 它会看起来很暗并且难以理解。所以我想为用户显示一个颜色的深度通道,但找不到如何在不损失准确性的情况下做到这一点。现在我这样做了:
xn::DepthMetaData xDepthMap;
depthGen.GetMetaData(xDepthMap);
XnDepthPixel* depthData = const_cast<XnDepthPixel*>(xDepthMap.Data());
cv::Mat depth(frame_height, frame_width, CV_16U, reinterpret_cast<void*>(depthData));
cv::Mat depthMat8UC1;
depth.convertTo(depthMat8UC1, CV_8UC1);
cv::Mat falseColorsMap;
cv::applyColorMap(depthMat8UC1, falseColorsMap, cv::COLORMAP_AUTUMN);
depthWriter << falseColorsMap;
但在这种情况下,我得到的输出比 Windows 的 kinects 软件显示的更糟糕(丢失细节)。所以我正在寻找一个在 OpenNI 或 OpenCV 中具有更好转换的函数。
【问题讨论】: