zed相机的基本使用

# zed相机的基本使用
# ===========================
# author: wubing
# date :2020.11.22
# ===========================
import pyzed.sl as sl
import cv2
import numpy as np

camera_settings = sl.VIDEO_SETTINGS.BRIGHTNESS
str_camera_setting = "BRIGHTNESS"
step_camera_settings = 1

def main():
    print("Running..")
    init = sl.InitParameters()      # 调用库里面的初始化类
    cam = sl.Camera()               # 定义相机的类
    if not cam.is_opened():         # cam.is_opened() 判断相机是否正常打开
        print("Opening ZED cam.")
    status = cam.open(init)         # 打开相机,并返回状态
    if status != sl.ERROR_CODE.SUCCESS:
        print(repr(status))
        exit()

    runtime = sl.RuntimeParameters()            # 对cam.grab()配置的参数
    mat = sl.Mat()                              # mat类 返回矩阵的类,有四个channels 
    left_mat = sl.Mat()
    nor_mat = sl.Mat()
    key = ''
    while key != 113:    # 'q'=113
        err = cam.grab(runtime)
        # grab:获取 grab(RuntimeParameters) 获取相机最新的一张图片,并根据RuntimeParameters里面的参数进行配置;
        # 运行时间较长,具体时间取决与配置参数和硬件
        if err == sl.ERROR_CODE.SUCCESS:
            cam.retrieve_image(mat, sl.VIEW.DEPTH, type=sl.MEM.CPU)
            # grab()函数已经完成了图像的获取和计算,retrieve_image()会根据参数要求找到对于的图片,将其赋给mat,默认是从GPU拷到CPU。
            # 如果GPU可以直接映射就可以设置为GPU,不会弄。
            cam.retrieve_image(left_mat, sl.VIEW.LEFT, type=sl.MEM.CPU)
            cam.retrieve_image(nor_mat, sl.VIEW.NORMALS, type=sl.MEM.CPU)
            # cv2.imshow("ZED-depth", mat.get_data())      # mat.get_date()是numpy.ndarray格式的 (720, 1280, 4)  0,1,2channel都是深度图,3channel是白色图片
            # print(type(mat.get_data()))
            # print(left_mat.get_data().shape)
            # img = mat.get_data()
            img = nor_mat.get_data()
            cv2.imshow("img", img[:,:,3])
            cv2.imshow("ZED-normal", nor_mat.get_data())
            # cv2.imshow("ZED-left", left_mat.get_data())  # left_mat.get_date()是numpy.ndarray格式的 (720, 1280, 4)
            key = cv2.waitKey(5)
        else:
            key = cv2.waitKey(5)
    # print(mat)
    cv2.destroyWindow("ZED-depth")
    cv2.destroyWindow("ZED-left")
    cam.close()


if __name__ == "__main__":
    main()



你可能感兴趣的:(zed双目相机)