Orbbec astra pro深度摄像头通过python读取深度值
Orbbec OpenNi SDK下载
要使用OPenNI需要先下载对应的SDK,地址是https://orbbec3d.com/develop/,拉到最下面选择
下载,下载完之后解压可以看到分别有三个平台的目录(Android,Linux,Windows):
我是跑在jetson nano上的,所以我选择的是Linux,进入Linux目录,又分为了Arm,Arm64,x64,x86三种架构:
而我的设备是Arm64的,所以我选择这个,进入Arm64文件夹:
$ sudo chmod +x install.sh
$ ./install.sh
会生成OpenNIDevEnvironment文件,每次需要source这个文件才可以读取深度值,为了方便,我们在~/.bashrc最后一行添加 source ${你的路径}/OpenNIDevEnvironment,然后执行source ~/.bashrc就可以了。
安装对应python包
$ pip install openni
对应代码
from openni import openni2
import numpy as np
import cv2
def mousecallback(event,x,y,flags,param):
if event==cv2.EVENT_LBUTTONDBLCLK:
print(y, x, dpt[y,x])
if __name__ == "__main__":
openni2.initialize()
dev = openni2.Device.open_any()
print(dev.get_device_info())
depth_stream = dev.create_depth_stream()
depth_stream.start()
cap = cv2.VideoCapture(0)
cv2.namedWindow('depth')
cv2.setMouseCallback('depth',mousecallback)
while True:
frame = depth_stream.read_frame()
dframe_data = np.array(frame.get_buffer_as_triplet()).reshape([480, 640, 2])
dpt1 = np.asarray(dframe_data[:, :, 0], dtype='float32')
dpt2 = np.asarray(dframe_data[:, :, 1], dtype='float32')
dpt2 *= 255
dpt = dpt1 + dpt2
cv2.imshow('depth', dpt)
ret,frame = cap.read()
cv2.imshow('color', frame)
key = cv2.waitKey(1)
if int(key) == ord('q'):
break
depth_stream.stop()
dev.close()
版权声明:本文为qq_39366151原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。