我在一些带有 kinect 传感器的项目中使用 openNI。我想用深度图给用户像素上色。现在我有从白色到黑色的像素,但我想要从红色到黑色。我已经尝试过 alpha 混合,但我的结果只是我的像素从粉红色到黑色,因为我添加(使用 addWeight)红色 + 白色 = 粉红色。
这是我的实际代码:
layers = device.getDepth().clone();
cvtColor(layers, layers, CV_GRAY2BGR);
Mat red = Mat(240,320, CV_8UC3, Scalar(255,0,0));
Mat red_body; // = Mat::zeros(240,320, CV_8UC3);
red.copyTo(red_body, device.getUserMask());
addWeighted(red_body, 0.8, layers, 0.5, 0.0, layers);
其中 device.getDepth() 返回带有深度图的 cv::Mat,而 device.getUserMask() 返回带有用户像素(仅白色像素)的 cv::Mat
一些忠告?
编辑:还有一件事:感谢萨米的回答,我已经做到了。但实际上我没有从 0 到 255 的值,而是从(例如)123-220 的值。
我将通过一个简单的 for 循环找到最小值和最大值(有更好的方法吗?),我如何将我的值从 min-max 映射到 0-255 ?