当前位置: 首页 > article >正文

用OpenNI2获取奥比中光Astra Pro输出的深度图(win,linux arm64 x64平台)

 搞了一个奥比中光Astra Pro,想在windows平台,和linux rk3588 (香橙派,ubuntu2404,debian)上获取深度信息,之前的驱动下载已经不好用了,参考如下

Astra 3D相机选型建议 - 知乎https://zhuanlan.zhihu.com/p/594485674

全网最详细 Opencv + OpenNi + 奥比中光(Orbbec) Astra Pro /乐视三合一体感摄像头LeTMC-520 + linux 环境搭建_opencv__小熊_-GitCode 开源社区https://gitcode.csdn.net/6628b2179c80ea0d2271a3b9.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MjQ2NjU4LCJleHAiOjE3NDk1NDcyMzYsImlhdCI6MTc0ODk0MjQzNiwidXNlcm5hbWUiOiJiYWJ5dGlnZXIifQ.7MZgOckoBFv-g_xu7D_ZwhsYMLEjSeeIYY9RONlT3KU&spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-2-114464244-blog-104761686.235%5Ev43%5Epc_blog_bottom_relevance_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-2-114464244-blog-104761686.235%5Ev43%5Epc_blog_bottom_relevance_base1&utm_relevant_index=3

1、windows平台 x64

另外windows平台要安装一个驱动程序

Releases · orbbec/OrbbecSDKhttps://github.com/orbbec/OrbbecSDK/releases下载OrbbecSDK_C_C++_v1.10.22_20250410_46139de6f_win_x64_release.zip

选中x64的包解压缩后\OrbbecSDK_v1.10.22\Driver\SensorDriver_V4.3.0.22.exe就是驱动

下载

Release Release v2.3.0.86-beat6 · orbbec/OpenNI_SDK · GitHubThis repository stores the Release packages of the OpenNI SDK - Release Release v2.3.0.86-beat6 · orbbec/OpenNI_SDKhttps://github.com/orbbec/OpenNI_SDK/releases/tag/v2.3.0.86-beat6

OpenNI_2.3.0.86_202210111950_4c8f5aa4_beta6_windows.zip解压缩后

OpenNI_2.3.0.86_202210111950_4c8f5aa4_beta6_windows\Win64-Release\tools\NiViewer.exe

运行后就可以获取数据了。

另外如何使用python读取数据

参考下面代码,另外要把OpenNI_2.3.0.86_202210111950_4c8f5aa4_beta6_windows\Win64-Release\tools\NiViewer中的文件放到与这个python代码同一目录下

from openni import openni2
import numpy as np
import cv2def depth2mi(depthValue):return depthValue * 0.001def depth2xyz(u, v, depthValue):fx = 577.54679fy = 578.63325cx = 310.24326cy = 253.65539# depth = depth2mi(depthValue)depth = depthValue * 0.001z = float(depth)x = float((u - cx) * z) / fxy = float((v - cy) * z) / fyresult = [x, y, z]return resultdef mousecallback(event, x, y, flags, param):if event == cv2.EVENT_LBUTTONDBLCLK:print(y, x, dpt[y, x])arr = np.array(dpt)depthValue = float(arr[y, x])coordinate = depth2xyz(x, y, depthValue)print("coordinate:", coordinate)if __name__ == "__main__":openni2.initialize()dev = openni2.Device.open_any()print("get_device_info()",dev.get_device_info())depth_stream = dev.create_depth_stream()depth_stream.start()cap = cv2.VideoCapture(0)cv2.namedWindow('depth')('depth', mousecallback)while True:frame_dep = depth_stream.read_frame()dframe_data = np.array(frame_dep.get_buffer_as_triplet()).reshape([480, 640, 2])dpt1 = np.asarray(dframe_data[:, :, 0], dtype='uint16')dpt2 = np.asarray(dframe_data[:, :, 1], dtype='uint16')dpt2 *= 255dpt = dpt1 + dpt2dpt = dpt[:, ::-1]im_color = cv2.applyColorMap(cv2.convertScaleAbs(dpt, alpha=0.03), cv2.COLORMAP_JET)cv2.imshow('depth', im_color)ret, frame = cap.read()a = framecv2.imshow('color', frame)key = cv2.waitKey(1)if int(key) == ord('q'):breakdepth_stream.stop()dev.close()

 学习资料

Astra Pro深度相机https://www.yahboom.com/study/Astra_Pro

 2、linux 平台x64

使用的x64 ubuntu2404 要再安装一个libglut3.12替换freeglut3

sudo apt install libglut3.12
sudo ln -s /usr/lib/x86_64-linux-gnu/libglut.so.3.12.0 /usr/lib/x86_64-linux-gnu/libglut.so.3

设备接入后用lsusb看到的情况,直接免驱动 

将Release Release v2.3.0.86-beat6 · orbbec/OpenNI_SDK · GitHub下载的zip包解压缩

运行 NiViewer报错,但是用管理员权限可以,改进方法如

你的设备是 Orbbec Astra Pro 系列,USB 设备 ID 是:

  • 2bc5:0403(Astra Pro 深度摄像头)

  • 2bc5:0501(Astra Pro HD 彩色摄像头)


创建规则文件

使用 sudo 创建新的规则文件:

 sudo nano /etc/udev/rules.d/558-orbbec-usb.rules

最后增加如下 内容,因为这个USB 设备 ID 没有加入到最新驱动中

# Astra Pro Depth Sensor
SUBSYSTEM=="usb", ATTR{idVendor}=="2bc5", ATTR{idProduct}=="0403", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Pro_depth_Sensor"
# Astra Pro HD Camera
SUBSYSTEM=="usb", ATTR{idVendor}=="2bc5", ATTR{idProduct}=="0501", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Pro_rgb"

 重新加载 udev 规则

sudo udevadm control --reload-rules
sudo udevadm trigger
之后普通用户也可以运行./NiViewer

 另外

3、linux 平台arm 64 (rk3588 香橙派 ubuntu2404)

另外我使用的linux 是rk3588 arm64的 ubuntu2404 要再安装一个libglut3.12替换freeglut3

sudo apt install libglut3.12
sudo ln -s /usr/lib/aarch64-linux-gnu/libglut.so.3.12.0 /usr/lib/aarch64-linux-gnu/libglut.so.3

目前使用OrbbecViewer_v1.10.22_202504111013_arm64_release.zip中的OrbbecViewer是可以显示深度与红外图的,但是视频流不好用,而且插在一个usb3.0上不好用,但换了一个就不行了,原因未知,进一步查询

使用python代码实现了

实现了一个yolo算法,深度信息进一步获取中

http://www.lryc.cn/news/2402398.html

相关文章:

  • Unity VR/MR开发-VR设备与适用场景分析
  • Linux: network: switch:arp cache更新规则 [chatGPT]
  • Java网络编程API 1
  • Android协程学习
  • Angular报错:cann‘t bind to ngClass since it is‘t a known property of div
  • uniapp+vue3实现CK通信协议(基于jjc-tcpTools)
  • Python爬虫实战:研究urlparse库相关技术
  • 解锁FastAPI与MongoDB聚合管道的性能奥秘
  • 软件工程方法论:在确定性与不确定性的永恒之舞中寻找平衡
  • Unity中的MonoSingleton<T>与Singleton<T>
  • 怎么通过 jvmti 去 hook java 层函数
  • 兰亭妙微 | 医疗软件的界面设计能有多专业?
  • 前端原生构建交互式进度步骤组件(Progress Steps)
  • 如何给windos11 扩大C盘容量
  • 【基于阿里云搭建数据仓库(离线)】Data Studio创建资源与函数
  • Linux_T(Sticky Bit)粘滞位详解
  • web3-以太坊智能合约基础(理解智能合约Solidity)
  • 高敏感应用如何保护自身不被逆向?iOS 安全加固策略与工具组合实战(含 Ipa Guard 等)
  • 【C++项目】负载均衡在线OJ系统-2
  • GC1809:高性能24bit/192kHz音频接收芯片解析
  • 2025年06月05日Github流行趋势
  • flask功能使用总结和完整示例
  • AWS 亚马逊 S3存储桶直传 前端demo 复制即可使用
  • DAY 15 复习日
  • Vue Router 导航方法完全指南
  • MidJourney入门学习
  • 2025最新Java日志框架深度解析:Log4j 2 vs Logback性能实测+企业级实战案例
  • 如何安全高效的文件管理?文件管理方法
  • 基于BI PaaS架构的衡石HENGSHI SENSE平台技术解析:重塑企业级数据分析基座
  • Hive中ORC存储格式的优化方法