Orbbec astra pro深度摄像头通过python读取深度值

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版权协议,转载请附上原文出处链接和本声明。