搞了一个奥比中光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 cv2
def depth2mi(depthValue):
return depthValue * 0.001
def depth2xyz(u, v, depthValue):
fx = 577.54679
fy = 578.63325
cx = 310.24326
cy = 253.65539
# depth = depth2mi(depthValue)
depth = depthValue * 0.001
z = float(depth)
x = float((u - cx) * z) / fx
y = float((v - cy) * z) / fy
result = [x, y, z]
return result
def 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 *= 255
dpt = dpt1 + dpt2
dpt = 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 = frame
cv2.imshow('color', frame)
key = cv2.waitKey(1)
if int(key) == ord('q'):
break
depth_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算法,深度信息进一步获取中