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 <class 'pyzed.sl.Mat'>
    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()



  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值