用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算法,深度信息进一步获取中
相关文章:

用OpenNI2获取奥比中光Astra Pro输出的深度图(win,linux arm64 x64平台)
搞了一个奥比中光Astra Pro,想在windows平台,和linux rk3588 (香橙派,ubuntu2404,debian)上获取深度信息,之前的驱动下载已经不好用了,参考如下 Astra 3D相机选型建议 - 知乎https://zhuanlan.zhihu.com/p/594485674 …...

Unity VR/MR开发-VR设备与适用场景分析
视频讲解链接:【XR马斯维】VR/MR设备与适用场景分析?【UnityVR/MR开发教程--入门】_游戏热门视频...

Linux: network: switch:arp cache更新规则 [chatGPT]
文章目录 介绍概念普通包带有不同的mac,是否更新arp cache?普通包带有相同的mac,是否刷新 aging timeswitch是否会主动学习介绍 关于arp cache在switch侧的行为。有很多问题需要理解。 概念 HP L3 - IP Services Configuration Guide 文档里有写:dynamic arp entry的解说…...

Java网络编程API 1
Java中的网络编程API一共有两套:一套是UDP协议使用的API;另一套是TCP协议使用的API。这篇文章我们先来介绍UDP版本的API,并尝试来写一个回显服务器(接收到的请求是什么,返回的响应就是什么)。 UDP数据报套…...
Android协程学习
目录 Android上的Kotlin协程介绍基本概念与简单使用示例协程的高级用法 结构化并发线程调度器(Dispatchers)自定义调度器并发:同步 vs 异步 异步并发(async 并行执行)同步顺序执行协程取消与超时 取消机制超时控制异步数据流 Flow协程间通信 使用 Channel使用 StateFlow /…...
Angular报错:cann‘t bind to ngClass since it is‘t a known property of div
遇到的错误: Cant bind to ngClass since it isnt a known property of div这个错误是 Angular 中 最常见的模板编译错误之一,通常出现在你试图使用 ngClass 指令,但 Angular 没有识别它的情况下。 ✅ 错误的根本原因 Angular 不知道 ngCla…...
uniapp+vue3实现CK通信协议(基于jjc-tcpTools)
1. TCP 服务封装 (tcpService.js) export class TcpService {constructor() {this.connections uni.requireNativePlugin(jjc-tcpTools)this.clients new Map() // 存储客户端连接this.servers new Map() // 存储服务端实例}// 创建 TCP 服务端 (字符串模式)createStringSe…...
Python爬虫实战:研究urlparse库相关技术
1 引言 1.1 研究背景与意义 网络爬虫作为互联网数据采集的核心技术,在信息检索、舆情分析、数据挖掘等领域具有广泛应用。随着 Web 技术的发展,现代网站 URL 结构日益复杂,包含路径参数、查询参数、锚点等多种组件,且存在相对路径、URL 编码等问题,给爬虫开发带来了挑战…...
解锁FastAPI与MongoDB聚合管道的性能奥秘
title: 解锁FastAPI与MongoDB聚合管道的性能奥秘 date: 2025/05/20 20:24:47 updated: 2025/05/20 20:24:47 author: cmdragon excerpt: MongoDB聚合管道是一种分阶段处理数据的流水线,通过$match、$group等阶段对文档进行特定操作,具有内存优化和原生操…...
软件工程方法论:在确定性与不确定性的永恒之舞中寻找平衡
更多精彩请访问:通义灵码2.5——基于编程智能体开发Wiki多功能搜索引擎-CSDN博客 当我们谈论“软件工程”时,“工程”二字总暗示着某种如桥梁建造般的精确与可控。然而,软件的本质却根植于人类思维的复杂性与需求的流变之中。软件工程方法论的…...
Unity中的MonoSingleton<T>与Singleton<T>
1.MonoSingleton 代码部分 using UnityEngine;/// <summary> /// MonoBehaviour单例基类 /// 需要挂载到GameObject上使用 /// </summary> public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T> {private static T _instance;…...
怎么通过 jvmti 去 hook java 层函数
使用 JVMTI 手动实现 Android Java 函数 Hook 要通过 JVMTI 手动实现 Android Java 函数 Hook,需要编写 Native 层代码并注入到目标进程中。以下是详细步骤和示例: 一、核心实现原理 JVMTI 提供两种主要 Hook 方式: Method Entry/Exit 事…...

兰亭妙微 | 医疗软件的界面设计能有多专业?
从医疗影像系统到手术机器人控制界面,从便携式病原体检测设备到多平台协同操作系统,兰亭妙微为众多医疗设备研发企业,打造了兼具专业性与可用性的交互界面方案。 我们不仅做设计,更深入理解医疗场景的实际需求: 对精…...

前端原生构建交互式进度步骤组件(Progress Steps)
在现代网页设计中,进度步骤(Progress Steps) 是一种常见的 UI 模式,常用于引导用户完成注册流程、多步表单、教程或任何需要分步骤操作的场景。本文将带你从零开始构建一个美观且功能完整的 “进度步骤”组件,并详细讲…...
如何给windos11 扩大C盘容量
动不动C盘就慢了,苹果逼着用户换手机,三天两头更新系统,微软也是毫不手软。c盘 从10个G就够用,到100G 也不够,看来通货膨胀是部分行业的。 在 Windows 11 中扩大 C 盘容量,主要取决于磁盘分区布局和可用空…...

【基于阿里云搭建数据仓库(离线)】Data Studio创建资源与函数
Data Studio支持在您的数据分析代码中引用自定义的资源和函数(支持MaxCompute、EMR、CDH、Flink),您需要先创建或上传资源、函数至目标工作空间,上传后才可在该工作空间的任务中使用。您可参考本文了解如何使用DataWorks可视化方式…...
Linux_T(Sticky Bit)粘滞位详解
Linux 粘滞位(Sticky Bit)详解 一、什么是粘滞位(Sticky Bit) 粘滞位(Sticky Bit)是 Linux 和 Unix 系统中一种特殊的权限设置,主要应用于目录,其作用是在多人共享访问的目录中&am…...

web3-以太坊智能合约基础(理解智能合约Solidity)
以太坊智能合约基础(理解智能合约/Solidity) 无需编程经验,也可以帮助你了解Solidity独特的部分;如果本身就有相应的编程经验如java,python等那么学起来也会非常的轻松 一、Solidity和EVM字节码 实际上以太坊链上储存…...
高敏感应用如何保护自身不被逆向?iOS 安全加固策略与工具组合实战(含 Ipa Guard 等)
如果你正在开发一款涉及支付、隐私数据或企业内部使用的 App,那么你可能比多数开发者更早意识到一件事——App 一旦被破解,损失的不只是代码,还有信任与业务逻辑。 在我们为金融类工具、HR 系统 App、数据同步组件等高敏感项目提供支持的过程…...

【C++项目】负载均衡在线OJ系统-2
文章目录 oj_server模块编写oj_server框架的搭建-oj_server/oj_server.cpp 路由框架 oj_model模块编写题目信息设置v1.文件版本-common/util.hpp boost库spilt函数的使用-oj_server/oj_model_file.hpp 文件版本model编写v2.mysql数据库版本1.mysql创建授权用户、建库建表录入操…...

GC1809:高性能24bit/192kHz音频接收芯片解析
1. 芯片概述 GC1809 是数字音频接收芯片,支持IEC60958、S/PDIF、AES3等协议,集成8选1输入切换、低抖动时钟恢复和24bit DAC,适用于家庭影院、汽车音响等高保真场景。 核心特性 高精度:24bit分辨率,动态范围105dB&…...

2025年06月05日Github流行趋势
项目名称:onlook 项目地址url:https://github.com/onlook-dev/onlook项目语言:TypeScript历史star数:16165今日star数:1757项目维护者:Kitenite, drfarrell, spartan-vutrannguyen, apps/devin-ai-integrat…...
flask功能使用总结和完整示例
Flask 功能使用总结与完整示例 一、Flask 核心功能总结 Flask 是轻量级 Web 框架,核心功能包括: 路由系统:通过 app.route 装饰器定义 URL 与函数的映射。模板引擎:默认使用 Jinja2,支持动态渲染 HTML。请求处理&…...
AWS 亚马逊 S3存储桶直传 前端demo 复制即可使用
自己踩过坑不想别人也踩坑了 亚马逊S3存储桶直传前端demo复制即可使用 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0…...
DAY 15 复习日
浙大疏锦行 数据使用爬虫爬取weibo数据,下面是代码 import datetime import os import csv import timeimport numpy as np import random import re import urllib.parse import requests from fake_useragent import UserAgentdef init():if not os.path.exists…...
Vue Router 导航方法完全指南
📖 前言 在 Vue 项目中,我们经常需要在不同页面之间跳转,或者更新当前页面的 URL 参数。Vue Router 提供了几种不同的导航方法,每种方法都有其特定的使用场景。本文将详细讲解这些方法的区别和最佳实践。 🎯 核心概念…...
MidJourney入门学习
1. 引言 MidJourney 是一款由美国科技公司开发的先进文本到图像生成 AI 工具,自 2022 年推出以来迅速在创意产业和社交媒体领域引发轰动。与 Stable Diffusion 不同,MidJourney 以其独特的美学风格、高度细节化的图像生成能力和强大的创意引导功能著称,成为设计师、艺术家和…...
2025最新Java日志框架深度解析:Log4j 2 vs Logback性能实测+企业级实战案例
一、为什么printStackTrace是"代码坟场"? 你写的日志可能正在拖垮系统! 在Java开发中,直接调用printStackTrace()打印异常堆栈是最常见的"自杀式操作"。这种方式会导致三大致命问题: 无法分级控制ÿ…...
如何安全高效的文件管理?文件管理方法
文件的管理早已不只是办公场景中的需求。日常生活、在线学习以及个人收藏中,文件管理正逐渐成为我们数字生活中的基础。但与此同时,文件管理的混乱、低效以及安全性问题也频繁困扰着许多人。 文件管理的挑战与解决思路 挑战一:文件存储无序…...

基于BI PaaS架构的衡石HENGSHI SENSE平台技术解析:重塑企业级数据分析基座
在数据驱动决策的时代,传统BI工具日益显露出扩展性弱、灵活性差、资源利用率低等痛点。衡石科技推出的HENGSHI SENSE平台,创新性地采用BI PaaS(平台即服务)架构,为企业构建了一个强大、开放、可扩展的数据分析基础设施…...