Realsense 相机SDK学习(一)——librealsense使用方法及bug解决(不使用Ros)

一.介绍

realsense相机是一个intel开发出来的一款深度相机,我之前使用他来跑过slam,也配置过他的驱动,在此附上realsense的相机驱动安装方法:Ubuntu20.04安装Intelrealsense相机驱动(涉及Linux内核降级)

本人在之前使用realsense相机时,一直都是用ros驱动的,觉得很苦恼,好好的一个相机为什么非得使用Ros才能驱动呢,也太麻烦了,因此就有了不使用ros来驱动相机完成一些小项目的想法,如下。

二.实现方法及代码演示

到此,假设读者已经按照上面给出的链接顺利的安装好相机驱动,接下来我们使用C++来调用ros

首先给出CMakeLists.txt文件

CMakeists.txt

cmake_minimum_required(VERSION 2.8)
project(realsense)set(CMAKE_BUILD_TYPE "Release")
# 添加c++ 11标准支持
set(CMAKE_CXX_FLAGS "-std=c++11 -O2")# 寻找OpenCV库
find_package(OpenCV REQUIRED)
find_package(realsense2 REQUIRED)
find_package(Threads REQUIRED)set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS} -Wall -std=c++0x"
)# 添加头文件
include_directories(${OpenCV_INCLUDE_DIRS})add_executable(realsense src/main.cpp)
target_link_libraries(realsense ${OpenCV_LIBS} ${realsense2_LIBRARY})

其中,最重要的两行代码是find_package(realsense2 REQUIRED) 和target_link_libraries(realsense ${OpenCV_LIBS} ${realsense2_LIBRARY}),这样我们的代码就可以链接到realsense库上了

main.cpp

好像还需要把librealsense2/rs.hpp找到,发现他的路径是/usr/local/include/,因此我把他移动到了/usr/include/下,使用指令

sudo cp -r /usr/local/include/librealsense2 /usr/include

#include <iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string>#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>#include<librealsense2/rs.hpp>using namespace std;
using namespace cv;int main() try
{//声明彩色图rs2::colorizer color_map;//声明realsense管道,rs2::pipeline pipe;//数据流配置信息【这步其实很重要】rs2::config pipe_config;pipe_config.enable_stream(RS2_STREAM_DEPTH,640,480,RS2_FORMAT_Z16,30);pipe_config.enable_stream(RS2_STREAM_COLOR,640,480,RS2_FORMAT_BGR8,30);//开始传送数据流rs2::pipeline_profile profile=pipe.start(pipe_config);//    //获取深度像素与长度单位的关系
//    float depth_scale = get_depth_scale(profile.get_device());
//    rs2_stream align_to = find_stream_to_align(profile.get_streams());while(waitKey(1)){rs2::frameset data=pipe.wait_for_frames();//等待下一帧rs2::frame depth=data.get_depth_frame().apply_filter(color_map);//获取深度图,加颜色滤镜rs2::frame color=data.get_color_frame();//获取宽高const int depth_w=depth.as<rs2::video_frame>().get_width();const int depth_h=depth.as<rs2::video_frame>().get_height();const int color_w=color.as<rs2::video_frame>().get_width();const int color_h=color.as<rs2::video_frame>().get_height();//创建OPENCV类型 并传入数据Mat depth_image(Size(depth_w,depth_h),CV_8UC3,(void*)depth.get_data(),Mat::AUTO_STEP);Mat color_image(Size(color_w,color_h),CV_8UC3,(void*)color.get_data(),Mat::AUTO_STEP);//显示imshow("depth_image",depth_image);imshow("color_image",color_image);}return EXIT_SUCCESS;
}
catch (const rs2::error &e){std::cout<<"RealSense error calling"<<e.get_failed_function()<<"("<<e.get_failed_args()<<"):\n"<<e.what()<<endl;return EXIT_FAILURE;
}
catch (const std::exception &e){std::cout<<e.what()<<endl;return EXIT_FAILURE;
}

运行后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/535121.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【string一些函数用法的补充】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 string类对象的修改操作 我们来看 c_str 返回c格式的字符串的操作&#xff1a; 我们来看 rfind 和 substr 的操作&#xff1a; string类非成员函数 我们来看 r…

C语言经典算法学习-4

文章目录 21.最大访客数22.中序式转后序式&#xff08;前序式&#xff09;23.后序式的运算24.洗扑克牌&#xff08;乱数排列&#xff09;25.Craps赌博游戏 21.最大访客数 说明&#xff1a;现将举行一个餐会&#xff0c;让访客事先填写到达时间与离开时间&#xff0c;为了掌握座…

新建项目module,但想归到一个目录下面

1. 想建几个module, 例如 component-base-service,component-config-service, 但是module多了会在CloudAction下面显示很多目录, 所以想把它们归到components模块下面去, 类似于下图的效果 2. 创建过程 右击CloudAction 新建 module -> 选maven类型 输入components, 建成后删…

Pytorch基础(21)-- torch.repeat_interleave()方法

分享一下自己目前在维护的Github项目&#xff0c;由于本人博士阶段接触了一个全新的研究方向-----使用机器学习、强化学习、深度学习等方法解决组合优化问题&#xff0c;维护这个项目的目的&#xff1a; &#xff08;1&#xff09;记录自己阅读过的paper&#xff0c;同时分享一…

浅谈如何自我实现一个消息队列服务器(1)——需求分析

文章目录 一、什么是消息队列&#xff1f;二、当下主流的消息队列(MQ)三、自我实现一个消息队列服务器的前期准备——需求分析3.1 核心概念3.2 broker server 核心概念3.2.1、虚拟主机&#xff08;Virtual Host&#xff09;3.2.2、交换机&#xff08;Exchange&#xff09;3.2.2…

外包干了5天,技术明显退步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

BEC报考公告 ,柯桥成人学商务英语,商务英语口语学校

BEC报考公告 报名时间 2024年3月12日10:00——2023年3月20日10:00 注册个人信息、上传电子照片并支付考试费用 考试时间 BEC初级&#xff1a;5月12日 BEC中级&#xff1a;5月25日 BEC高级&#xff1a;5月18日 笔试及口试具体时间以准考证为准 报名费用 初级&#xff1a;…

C++矢量运算与java矢量运算

矢量运算 概述&#xff1a; 矢量运算是一种基于向量的数学运算&#xff0c;它遵循特定的法则。以下是矢量运算的一些基本原理&#xff1a; 矢量加法&#xff1a;可以使用平行四边形法则或三角形法则来执行。当两个矢量相加时&#xff0c;可以将它们的起点放在同一个点上&…

朴素贝叶斯算法基础——案例:对新闻进行分类

贝叶斯公式 朴素&#xff1a;假设特征与特征之间相互独立 朴素贝叶斯算法&#xff1a;朴素贝叶斯 应用场景&#xff1a;文本分类&#xff08;单词作为特征&#xff09; 拉普拉斯平滑系数 Ni&#xff1a;F1词在C类别所有文档中出现的次数 N&#xff1a;所属类别C下的文档所…

华为车控面试前后

个人经历&#xff1a; 秋招未接受其他公司offer&#xff0c;all in华子。 ->秋招失败0 offer 年前被车bu捞后入池开始审批。 ->等待超过1个月&#xff0c;陷入煎熬。 ->终于等到意向书。 分享时间线&#xff1a; 10月 笔试和3面入池2012 1月 收到车bu捞人电话解…

JVM是如何运行的

JVM&#xff08;Java Virtual Machine&#xff0c;Java虚拟机&#xff09;是 Java 程序的运行环境&#xff0c;它负责将 Java 字节码翻译成机器代码并执行。也就是说 Java 代码之所以能够运行&#xff0c;主要是依靠 JVM 来实现的。 JVM 整体的大概执行流程是这样的&#xff1…

尚硅谷SpringBoot3笔记

推荐课程&#xff1a;03.快速入门-示例Demo_哔哩哔哩_bilibili 官方笔记&#xff1a;SpringBoot3全栈指南 (yuque.com) 目录 01 -- 示例demo 1. 在新建项目创建一个Maven 模块 2. 引入 spring-boot-starter-parent 和 spring-boot-starter-web 依赖 3. 指示 Spring Boot 启…