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

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

 搞了一个奥比中光Astra Pro,想在windows平台,和linux rk3588 上获取深度信息,之前的驱动下载已经不好用了

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 平台arm 64 (还有调试中)

另外我使用的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上不好用,但换了一个就不行了,原因未知,进一步查询

http://www.xdnf.cn/news/11984.html

相关文章:

  • React从基础入门到高级实战:React 高级主题 - 测试进阶:从单元测试到端到端测试的全面指南
  • PWM 相关知识整理
  • 【大模型:知识图谱】--4.neo4j数据库管理(cypher语法1)
  • 振动力学:欧拉-伯努利梁的弯曲振动(考虑轴向力作用)
  • Qt Quick快速入门笔记
  • 国产三维CAD皇冠CAD在「金属压力容器制造」建模教程:蒸汽锅炉
  • 音乐播放器小程序设计与实现 – 小程序源码分享
  • typescript中的type如何使用
  • gitlab rss订阅失败
  • LeetCode 3226.使两个整数相等的位更改次数
  • SkyWalking架构深度解析:分布式系统监控的利器
  • Docker容器化的文件系统隔离机制解析
  • 解决com.jcraft.jsch.JSchException: Algorithm negotiation fail
  • CppCon 2015 学习:Beyond Sanitizers
  • 全角转半角函数(APP)
  • Viggle:开启视频人物替换新纪元
  • 书籍转圈打印矩阵(8)0604
  • Reids 如何处理缓存穿透、缓存击穿、缓存雪崩问题?
  • 使用ArcPy进行栅格数据分析
  • 麒麟+ARM架构安装mysql8的操作指南
  • 各个布局的区别以及示例
  • Sql Server 中常用语句
  • 计算机系统结构-第五章-目录式协议
  • psycopg2-binary、pgvector、 SQLAlchemy、 PostgreSQL四者的关系
  • 【无人机】无人机UAV、穿越机FPV的概念介绍,机型与工具,证书与规定
  • JavaScript性能优化实战:深入探讨JavaScript性能瓶颈与优化技巧
  • UE5 创建了一个C++类,现在我还有一个蓝图类,我想将编写的C++类中包含的功能加入到这个蓝图类里面,如何做到
  • 2025年渗透测试面试题总结-腾讯[实习]安全研究员(题目+回答)
  • P3156 【深基15.例1】询问学号
  • Windows系统工具:WinToolsPlus 之 SQL Server 日志清理