ubutu的Realsense摄像头的环境配置的报错解决(个人认为官方文档存在问题)以及官方视频流样例测试(无需摄像头)

2023-05-16

Realsense支持多种语言进行开发,因为之前学过python,所以计划使用Pycharm进行相关的项目开发,由于没带摄像头回家,所以使用了官方的视频流进行测试,以下是Realsense的环境配置及Pycharm相关的库函数安装说记录

Realsense SDK的下载

1、首先要在Real Sense官网上下载SDK的安装包

 点击DEVELOPERS,然后点击SDK2.0

 下载SDK

滑到最下方 ,Linux系统要点击这个源码包进行编译,Windows系统下载上面的exe就好

下载完成后,将其拖动到虚拟机页面中,点击提取到此处,然后可以将解压过后的文件放入其他路径中,这个看个人习惯。

2、右击该文件,在终端打开

2、 按照官方说明进行编译

注意:官方说明存在漏洞,有几个驱动包的安装命令没有写在上面,如果直接按照官方命令的话会报错,所以需要在该文件终端输入以下命令,再按照官方文档来。

sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg

如果嫌看起来麻烦的话,可以复制后在word文档中将其翻译为中文副本,方便查看

注意:要看清楚每个命令前的说明,有很多都是其他版本或者内核的命令,顺序很重要,不要跳着来,前面如果报错要先解决它,不然到关键步骤的时候会因为缺少依赖项而报一些很莫名其妙的错误。

比如这里,我用的是Ubuntu18.04,如果有其他版本的话就使用其他的命令就好

 还有这里也是,看清楚自己的版本和内核

 至于CMake的话可以在ubuntu的软件商店上下载,或者直接到CMake官网上下载,网上教程很多,可以自行参考。

以下是我的Ubuntu18.04使用的全部命令

#记得先右击该文件打开终端

sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE

sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main" -u

sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
sudo update-grub && sudo reboot
sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
./scripts/patch-realsense-ubuntu-lts.sh
mkdir build && cd build
cmake ../
DCMAKE_BUILD_TYPE=Release
cmake ../ -DBUILD_EXAMPLES=true
sudo make uninstall && make clean && make && sudo make install
realsense-viewer

如果上面命令出现问题,也可以参考这个文档

3、pycharm专业版的下载

到Pycharm官网上下载安装包,然后同样将其拖入虚拟机页面中,右键提取到此处。

具体操作可以参考此教程,注意:配置环境变量时自己的路径和教程中的路径是不一样的,先打开终端,输入pwd查看下自己的路径再配置。以及如果想激活pycharm又不想掏100块的话,可以直接去淘宝上买一个破解插件,教程很简单,而且只要7块钱,不需要去修改host文件,当然也可以去网上找激活码,不过个人感觉用网上的激活码太麻烦,所以这里不推荐。

4、Pycharm开发Reslsense的常用库下载

配置完路径之后在命令行输入Pycharm.sh,即可打开Pycharm

新建一个项目后,点击左上角文件中的设置

 然后点击项目python project中的python解释器

 点这个加号,然后搜索自己需要的软件包,python开发Real Sense常用的软件包有,pyrealsense2;numpy;CV2以及open3d;这些都可以提前下载到项目中,在下载open3d的时候可能会报错,可以升级一些pip软件包,(直接搜索pip,然后在指定版本那里勾选更高的版本下载),不过这么做可能会造成python的pip命令与当前版本不适配,后面调回来就好。

官方代码测试

1.还是在DEVEOPLERS下方,点击code samples

 然后下拉选择自己想要用于开发的语言,这里我选的是python

 每个例子都有对应的作用解释,点击后可以看到代码,上面都有英文注释

 

 插上设备后在pycharm中输入测试代码

注意:要先下载pyrealsense2;numpy;cv2三个软件包,否则将会报错

## License: Apache 2.0. See LICENSE file in root directory.
## Copyright(c) 2017 Intel Corporation. All Rights Reserved.

#####################################################
##              Align Depth to Color               ##
#####################################################

# First import the library
import pyrealsense2 as rs
# Import Numpy for easy array manipulation
import numpy as np
# Import OpenCV for easy image rendering
import cv2

# Create a pipeline
pipeline = rs.pipeline()

# Create a config and configure the pipeline to stream
#  different resolutions of color and depth streams
config = rs.config()

# Get device product line for setting a supporting resolution
pipeline_wrapper = rs.pipeline_wrapper(pipeline)
pipeline_profile = config.resolve(pipeline_wrapper)
device = pipeline_profile.get_device()
device_product_line = str(device.get_info(rs.camera_info.product_line))

found_rgb = False
for s in device.sensors:
    if s.get_info(rs.camera_info.name) == 'RGB Camera':
        found_rgb = True
        break
if not found_rgb:
    print("The demo requires Depth camera with Color sensor")
    exit(0)

config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)

if device_product_line == 'L500':
    config.enable_stream(rs.stream.color, 960, 540, rs.format.bgr8, 30)
else:
    config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)

# Start streaming
profile = pipeline.start(config)

# Getting the depth sensor's depth scale (see rs-align example for explanation)
depth_sensor = profile.get_device().first_depth_sensor()
depth_scale = depth_sensor.get_depth_scale()
print("Depth Scale is: " , depth_scale)

# We will be removing the background of objects more than
#  clipping_distance_in_meters meters away
clipping_distance_in_meters = 1 #1 meter
clipping_distance = clipping_distance_in_meters / depth_scale

# Create an align object
# rs.align allows us to perform alignment of depth frames to others frames
# The "align_to" is the stream type to which we plan to align depth frames.
align_to = rs.stream.color
align = rs.align(align_to)

# Streaming loop
try:
    while True:
        # Get frameset of color and depth
        frames = pipeline.wait_for_frames()
        # frames.get_depth_frame() is a 640x360 depth image

        # Align the depth frame to color frame
        aligned_frames = align.process(frames)

        # Get aligned frames
        aligned_depth_frame = aligned_frames.get_depth_frame() # aligned_depth_frame is a 640x480 depth image
        color_frame = aligned_frames.get_color_frame()

        # Validate that both frames are valid
        if not aligned_depth_frame or not color_frame:
            continue

        depth_image = np.asanyarray(aligned_depth_frame.get_data())
        color_image = np.asanyarray(color_frame.get_data())

        # Remove background - Set pixels further than clipping_distance to grey
        grey_color = 153
        depth_image_3d = np.dstack((depth_image,depth_image,depth_image)) #depth image is 1 channel, color is 3 channels
        bg_removed = np.where((depth_image_3d > clipping_distance) | (depth_image_3d <= 0), grey_color, color_image)

        # Render images:
        #   depth align to color on left
        #   depth on right
        depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET)
        images = np.hstack((bg_removed, depth_colormap))

        cv2.namedWindow('Align Example', cv2.WINDOW_NORMAL)
        cv2.imshow('Align Example', images)
        key = cv2.waitKey(1)
        # Press esc or 'q' to close the image window
        if key & 0xFF == ord('q') or key == 27:
            cv2.destroyAllWindows()
            break
finally:
    pipeline.stop()

此示例展示通过将深度图像对准到彩色图像并执行简单的计算来表明通过对彩色图像进行简单的计算来执行背景移除的方法。

如果没带摄像头也可以采用realsense官方录好的视频进行测试,看看自己配置的环境是否正确,这里我选的是第二个,

首先在官网上下载样例,可以任选,点击对应的图片下载,然后将其拖入虚拟机页面中,右键提取到此处

然后打开命令行,输入realsense-viewer,出现如下页面,将上面解压好的文件拖入realsense-viewer的页面中,即可播放深度视频流,以下是实际效果

 切换为2D

并且当鼠标移到任意一个像素点上时,它都可以显示对应的三维坐标

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubutu的Realsense摄像头的环境配置的报错解决(个人认为官方文档存在问题)以及官方视频流样例测试(无需摄像头) 的相关文章

随机推荐

  • 仿牛客技术博客项目常见问题及解答(三)

    书接上回 xff1a 仿牛客技术博客项目常见问题及解答 xff08 二 xff09 李孛欢的博客 CSDN博客 13 项目中的kafka是怎么用的 xff1f kafka入门 Apache Kafka是一个分布式流平台 一个分布式的流平台应
  • [Java] 继承 和 多态(学习总结)

    目录 继承 一 继承主要表示概念层上的 is a 的关系 二 什么是继承 三 语法 四 继承方式 xff1a 五 访问权限 六 构造方法 七 父类的属性和方法的访问 八 重载和重写 xff08 前提是子类是有权限的 xff09 九 执行顺序
  • 第七章-X86汇编语言从实模式到保护模式

    第七章 比高斯更快的计算 7 3 显示字符串 39 1 43 2 43 3 43 43 100 61 39 字符串编译阶段 xff0c 编译器将把它们拆开 xff0c 形成一个个单独的字节jump near start跳过没有指令的数据区1
  • 【java】杂七杂八的基础知识

    1 当用javac命令编译Java源程序 xff08 java文件 xff09 时 xff0c 必须写出该源文件的完整文件名 xff0c 包括扩展名 java 2 当用java exe命令运行一个字节码 class 文件时 xff0c 不必
  • 论文笔记 Pruning neural networks without any databy iteratively conserving synaptic flow

    摘要 修剪神经网络的参数可以在训练和测试期间节省时间 内存和能量 最近的研究发现 xff0c 通过一系列昂贵的训练和修剪周期 xff0c 初始化时存在中奖彩票或稀疏可训练的子网络 这就提出一个基本问题 xff1a 我们能否在初始化时识别出高
  • 常见通信协议-原理篇

    目录 前言通信协议分类1 串行与并行通信2 同步与异步通信3 串行通信数据传送方向常见通信方式分类不同分类协议需要额外处理的问题 各通信协议详解一 UART 通用异步收发器 1 接口连接方式2 帧格式波特率 二 IIC 集成电路总线 1 接
  • 树莓派安装ubuntu20.04、图形桌面、ROS笔记

    目录标题 1 安装ubuntu方式1 xff1a 树莓派镜像烧录器方式2 xff1a win32 Disk Imager 烧录软件 2 添加wifi方式一 network config文件方式二 50 cloud init yaml文件 x
  • Git 常用命令

    git 注 xff1a 在使用的任何的 git 命令前 xff0c 都要切换到 git 项目目录下 git init 初始化一个 git 仓库 git status 查看当前 git 仓库的状态 git add file 修改 file 文
  • 字符串查找函数strstr,strtok的详细介绍

    strstr 返回str2在str1中第一次出现的指针 xff0c 如果str2不是str1的一部分 xff0c 则返回空指针str1 xff08 简单来说就是在字符串里找子字符串 xff09 可以看到上图strstr函数找到子串后会把剩余
  • 实现Windows远程连接

    此方法不止局限于局域网内 xff0c 只要被控制端的电脑连接上了互联网 xff0c 那么在任意一个电脑上都可以连接 话不多说直接上干货 xff01 xff01 xff01 配置被控制端电脑 一 开启远程桌面访问功能 不是windwos专业版
  • Jetpack Compose 不止是一个UI框架~

    Jetpack Compose是用于构建原生Android UI的现代工具包 Jetpack Compose使用更少的代码 xff0c 强大的工具和直观的Kotlin API xff0c 简化并加速了Android上的UI开发 这是Andr
  • 父类和子类方法的调用

    由于没有找到想要的解释 xff0c 于是自己就在idea上自测来寻找答案 关于父类 xff0c 子类 xff0c 多态之间方法的调用 package 思考 public class 子类调用 public static void main
  • vector介绍与使用(C++)

    目录 一 vector的介绍 二 vector的使用 2 1构造函数 2 2vector iterator 的使用 2 3vector 空间增长问题 2 4 vector 增删查改 2 5 vector 迭代器失效问题 一 vector的介
  • 网络层——IP协议详细解读

    文章目录 IP协议1 IP协议的报文格式2 IP协议的地址管理3 IP地址的组成4 IP协议的路由选择 IP协议 之前介绍了传输层的重点协议 xff0c TCP和UDP协议 xff0c 以下将介绍网络层的重点协议IP协议 1 IP协议的报文
  • 基于opencv实现追踪物体的功能

    nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp From sztu 自动化专业的小菜鸡 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 本篇将介绍计算机视觉的物体追踪 基于py
  • PX4源码中CMakeLists.txt文件的相关含义

    在px4每个模块中 xff0c 都会引用到CMakeLists txt文件 比如 代码 px4 add module MODULE modules attitude estimator q MAIN attitude estimator q
  • 位置式Pid和增量式Pid的定义及应用

    PID算法是一个典型的闭环控制系统 P I D xff0c 比例 积分 微分 开环 xff1a 输入量对输出量没有反馈作用 xff1b 闭环 xff1a 输入量对输出量有反馈作用 位置式Pid 位置式Pid就是位置闭环控制 xff0c 位置
  • Mysql中的in和find_in_set的区别?

    1 是否使用索引 find in set xff1a 不使用索引 xff0c 是全表扫描in xff1a 使用索引 2 使用方法 在mysql中in的使用情况如下 xff08 in里面放的是常量 xff09 xff1a select fro
  • Docker 常用命令---持续更新中

    Docker xff1a Docker的三大核心概念 xff1a 镜像 容器 仓库 镜像 xff1a 类似虚拟机的镜像 用俗话说就是安装文件 容器 xff1a 类似一个轻量级的沙箱 xff0c 容器是从镜像创建应用运行实例 xff0c 可以
  • ubutu的Realsense摄像头的环境配置的报错解决(个人认为官方文档存在问题)以及官方视频流样例测试(无需摄像头)

    Realsense支持多种语言进行开发 xff0c 因为之前学过python xff0c 所以计划使用Pycharm进行相关的项目开发 xff0c 由于没带摄像头回家 xff0c 所以使用了官方的视频流进行测试 xff0c 以下是 xff3