获得深度图像数据,转成cv::Mat格式
cv::Mat depthMat(depthi->getHeight(), depthi->getWidth (), CV_16UC1, depth_map);
清除1米外的数据
int nr = depthMat.rows; // number of rows
int nc = depthMat.cols; // number of columns
for (int i = 0; i<nr; i++)
{
for (int j = 0; j<nc; j++) {
if (depthMat.at<ushort>(i, j)>1000){
depthMat.at<ushort>(i, j) = 0;
}
}
}
将像素16U数据转成8U数据
depthMat.convertTo(depthMat, CV_8UC1, 1.0 / 16);
正常来说因子应该为 256/65536=1/256。16表示16×256=4096,可测障碍最远为4.096米,而1米外的障碍已清楚,图像像素最大深度肯定小于1000,因此因子为1/16可将图像上的所有障碍保留下来。
cv::Mat threshold_output;
cv::threshold(depthMat, thr