码迷,mamicode.com
首页 > 其他好文 > 详细

RGBD相机模型与图片处理

时间:2020-05-08 20:00:07      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:表示   alt   处理   enc   continue   图片   flight   time   oat   

本文学习自《视觉SLAM十四讲》
双目相机通过视差来计算深度。RGBD相机则可以主动测量每个像素的深度。

  1. 通过红外结构光(Structured Light)来测量像素距离的。例子有Kinect 1 代、Project Tango 1 代、Intel RealSense 等。
  2. 通过飞行时间法(Time-of-flight,ToF)原理测量像素距离的。例子有Kinect 2 代和一些现有的ToF 传感器等

RGBD相机原理图
技术图片

那么如何从RGBD相机提取像素的深度信息呢?
下面是一个简单的小程序,可以显示像素的深度信息.

#include <iostream>
#include <fstream>
#include <opencv2/opencv.hpp>
using namespace std;

float depthscale = 1.0f/1000; //尺度因子,表示一个像素对应多少实际中的米
int main(int argc, char **argv) 
{
    cv::Mat  depth = cv::imread("img.jpg");
    depth.convertTo(depth,CV_32FC1,depthscale);

    for (int v = 0; v < depth.rows; v++)
    {
        for (int u = 0; u < depth.cols; u++) {
            unsigned int d = depth.ptr<unsigned short>(v)[u]; // 深度值
            if (d == 0) 
                continue; // 为0表示没有测量到
            else
            {
                cout<<d<<"";
                if(v%50==0||u%50==0)
                    cout<<endl;
            }
            
        }
    }
    return 0;
}

RGBD相机模型与图片处理

标签:表示   alt   处理   enc   continue   图片   flight   time   oat   

原文地址:https://www.cnblogs.com/guoben/p/12846363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!