VS2019创建RealSense2.0 SDK新项目--使用深度数据测量物理世界中两点间的距离

本文档详细介绍了如何在VS2019中配置RealSense2.0 SDK项目,解决新建工程时的环境配置和依赖项问题,以及如何使用深度数据测量物理世界中两点间的距离。教程涵盖了头文件和库目录的设置,以及处理深度数据的关键步骤,包括颜色与深度流的对齐、后处理、2D到3D转换和OpenGL的使用。
摘要由CSDN通过智能技术生成

项目:

硬件平台:

 win10 x64   

Visual Studio 2019     

Intel Realsense SDK 2.0

这是在官网上下载的例程,默认安装在C盘,include是头文件,samples是例子
先说明:Hello第一个例子添加的依赖项只需要realsense2.lib就行,其他的例程则需要添加更多的依赖项,否则会报错

大神

问题描述:

在VS新建工程这里坑比较多,以下是手把手教建工程,如果已经配置成功的可略过不看哦~

1.环境变量配置(设置完之后,建议电脑重启一下,不过问题不大,看实际情况)
电脑——属性——高级系统设置——环境变量——系统变量——Path——如下图:
在这里插入图片描述

2.打开vs,新建一个工程,我把这个工程放在E盘,然后在解决方案资源管理器,右键打开属性
引入头文件和库目录+添加依赖项,完成一切后,连上相机就可以啦~

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

原因分析:

大量的头文件和依赖项,没有的话,靠一个main函数跑不了,路径什么的一定要设置好才行,不过每次新建都得引入一次是真的烦人,可以试下在其他的环境下跑吧。

关于用深度测两点间的距离:

本教程介绍了使用深度数据测量现实距离的简单方法。

注意:测量真实对象的尺寸是深度相机的明显应用之一。
该示例并不是要成为合适的度量工具,而是要展示关键概念。
使用更好的算法,可以大大提高测量结果。

在本教程中,您将学习如何:

在空间上使颜色流与深度对齐(与rs-align中的深度与颜色对齐相反)
利用后处理来处理丢失或嘈杂的深度数据
在2D像素和3D空间中的点之间转换
利用多核来并行化数据流
使用OpenGL在深度上方叠加颜色

#include<librealsense2/rs.hpp>
#include<librealsense2/rsutil.h>
#include "example.hpp"

#include<math.h>
//#include<corecrt_math_defines.h>  //该头文件包含M_PI的定义
#include<queue>
#include<unordered_set>
#include<map>
#include<thread>
#include<atomic>
#include<mutex>

#define _USE_MATH_DEFINES
#define M_PI       3.14159265358979323846   // pi
using pixel = std::pair<int, int>;

//Distance 3D 用于计算两个像素之间的真实3D距离
float dist_3d(const rs2::depth_frame& frame, pixel u, pixel v);

//Toggle helper类将用于渲染两个按钮
//控制尺子的边缘
struct toggle
{
   
    toggle() : x(0.f), y(0.f) {
   }
    toggle(float xl, float yl)
        : x(std::min(std::max(xl, 0.f), 1.f)),
        y(std::min(std::max(yl, 0.f), 1.f))
    {
   }

    //从[0,1]空间移动到特定帧的像素空间
    pixel get_pixel(rs2::depth_frame frm) const
    {
   
        int px = x * frm.get_width();
        int py = y * frm.get_height();
        return{
    px, py };
    }

    void render(const window& app)
    {
   
        glColor4f(0.f, 0.0f, 0.0f, 0.2f);
        render_circle(app, 10);
        render_circle(app, 8);
        glColor4f(1.f, 0.9f, 1.0f, 1.f);
        render_circle(app, 6);
    }

    void render_circle(const window& app, float r)
    {
   
        const float segments = 16;
        glBegin(GL_TRIANGLE_STRIP);
        for (auto i = 0; i <= segments; i++)
        {
   
            auto t = 2 * M_PI * float(i) / segments;

            glVertex2f(x * app.width() + cos(t) * r,
                y * app.height() + sin(t) * r);

            glVertex2f(x * app.width(),
                y * app.height());
        }
        glEnd();
    }

    //这个辅助函数用于查找最接近鼠标光标的按钮
    //因为只比较这个距离,可安全的跳过sqrt
    float dist_2d(const toggle& other) co
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值