Kir*_*kov 5 opencv kinect openni
我正在使用 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;
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我得到的输出比 Windows 的 kinects 软件显示的更糟糕(丢失细节)。所以我正在寻找 OpenNI 或 OpenCV 中具有更好转换的函数。
尝试这个:
const float scaleFactor = 0.05f;
depth.convertTo(depthMat8UC1, CV_8UC1, scaleFactor);
imshow("depth gray",depthMat8UC1);
Run Code Online (Sandbox Code Playgroud)
发挥价值以获得您满意的结果
| 归档时间: |
|
| 查看次数: |
2619 次 |
| 最近记录: |