深度图mdepth与点云之间的关系如下:
PointCloud::Ptr cloud(new PointCloud);
// 遍历深度图
for (int m = 0; m < mDepth.rows; m++)
{
for (int n = 0; n < mDepth.cols; n++)
{
// 获取深度图中(m,n)处的值
ushort d = mDepth.ptr<ushort>(m)[n];
// d 没有值则跳过此点
if (d == 0)
{
continue;
}
PointT p;
// 计算这个点的空间坐标
p.z = double(d) / camera_factor;
p.x = (n - camera_cx) * p.z / camera_fx;
p.y = (m - camera_cy) * p.z / camera_fy;
p.r = rand() % 255;
p.g = rand() % 255;
p.b = rand() % 255;
cloud->points.push_back(p);
}
}
预知后事如何,请到这里:
想了解更多精彩内容,快来关注微信公众号:哈尔滨工业制造联盟