• ZED相机获取图像python


    1. import pyzed.sl as sl
    2. import cv2
    3. import numpy as np
    4. import os
    5. class CameraZed2:
    6. def __init__(self,resolution=None,fps=30,depthMode = None):
    7. self.zed = sl.Camera()
    8. self.input_type = sl.InputType()
    9. self.init_params = sl.InitParameters(input_t=self.input_type)
    10. # 设置分辨率
    11. if resolution == "2K":
    12. self.init_params.camera_resolution = sl.RESOLUTION.HD2K
    13. elif resolution == "1080":
    14. self.init_params.camera_resolution = sl.RESOLUTION.HD1080
    15. else: # 默认
    16. self.init_params.camera_resolution = sl.RESOLUTION.HD720
    17. self.init_params.camera_fps = fps # 设置帧率
    18. # 设置获取深度信息的模式
    19. if depthMode == "PERFORMANCE":
    20. self.init_params.depth_mode = sl.DEPTH_MODE.PERFORMANCE
    21. elif depthMode == "QUALITY":
    22. self.init_params.depth_mode = sl.DEPTH_MODE.QUALITY
    23. else:
    24. self.init_params.depth_mode = sl.DEPTH_MODE.ULTRA
    25. self.init_params.coordinate_units = sl.UNIT.MILLIMETER # 单位毫米
    26. # 打开相机
    27. err = self.zed.open(self.init_params)
    28. if err != sl.ERROR_CODE.SUCCESS:
    29. print(repr(err))
    30. self.zed.close()
    31. exit(1)
    32. self.runtime = sl.RuntimeParameters()
    33. self.runtime.sensing_mode = sl.SENSING_MODE.STANDARD
    34. self.savepath = '' # 标定图像保存的路径
    35. def grab_imgs(self): # 捕获左右图像用于相机标定(文件夹自动创建)
    36. img_l = sl.Mat()
    37. img_r = sl.Mat()
    38. num = 0
    39. # 自动创建保存文件夹(分别存放左图和右图)
    40. import time
    41. name = time.strftime("%Y-%m-%d-%H-%M", time.localtime())
    42. self.savepath_L = './images/%s/L' % name
    43. self.savepath_R = './images/%s/R' % name
    44. os.makedirs(self.savepath_L,exist_ok=True)
    45. os.makedirs(self.savepath_R,exist_ok=True)
    46. while True:
    47. if self.zed.grab(self.runtime) == sl.ERROR_CODE.SUCCESS:
    48. self.zed.retrieve_image(img_l,sl.VIEW.LEFT)
    49. self.img_l = img_l.get_data()
    50. self.zed.retrieve_image(img_r,sl.VIEW.RIGHT)
    51. self.img_r = img_r.get_data()
    52. view = np.concatenate((self.img_l,self.img_r),axis=1)
    53. cv2.imshow('View',cv2.resize(view,(1920,540)))
    54. key = cv2.waitKey(1)
    55. if key & 0xFF == ord('s'): # 按S同时保存左右图像
    56. savePath_L = os.path.join(self.savepath_L, "L{:0>3d}.png".format(num))
    57. print(savePath_L)
    58. cv2.imwrite(savePath_L, self.img_l)
    59. savePath_R = os.path.join(self.savepath_R, "R{:0>3d}.png".format(num))
    60. cv2.imwrite(savePath_R, self.img_r)
    61. num +=1
    62. if key & 0xFF == 27: # 按esc退出视图窗口
    63. break
    64. if __name__ == "__main__":
    65. cam = CameraZed2(resolution='1080',fps=30)
    66. cam.grab_imgs() # 获取标定图像(左、右图)

    注:在根目录中创建一个images的文件夹

  • 相关阅读:
    JAVA练习百题之数组插入元素
    c# 实验七 图像列表框及树形视图控件的使用
    使用 Webmin+bind9快速搭建私有DNS服务器
    FlinkException
    电脑突然开机无反应,怎么办
    我们来浅谈代码语言的魅力
    独立站怎么设置打折活动?独立站新站怎么优化长尾词?——站斧浏览器
    记录一次 vue2 前端项目整合过程
    DevExpress WinForms图表组件 - 直观的数据信息呈现方式!(二)
    【成功实现】CentOS磁盘扩容
  • 原文地址:https://blog.csdn.net/m0_68738477/article/details/132668885