最近在学习机器视觉,主要基于ZED做一些视觉算法,故记录下学习过程。本篇文章主要是获取ZED实时视频。
摄像头:ZED USB接口
系统:Ubuntu18.04
创建python文件,test.py
import cv2
import numpy as np
import pyzed.sl as sl #python3 zed apidef image_capture():zed = sl.Camera()# 设置相机的分辨率1080和采集帧率30fpsinit_params = sl.InitParameters()init_params.camera_resolution = sl.RESOLUTION.HD1080 # Use HD1080 video modeinit_params.camera_fps = 30 # fps可选:15、30、60、100err = zed.open(init_params) # 根据自定义参数打开相机if err != sl.ERROR_CODE.SUCCESS:exit(1)runtime_parameters = sl.RuntimeParameters() # 设置相机获取参数runtime_parameters.sensing_mode = sl.SENSING_MODE.STANDARD #深度感应模式i = 0# 创建sl.Mat对象来存储图像(容器),Mat类可以处理1到4个通道的多种矩阵格式(定义储存图象的类型)image = sl.Mat() # 图像# # 获取分辨率resolution = zed.get_camera_information().camera_resolutionw, h = resolution.width , resolution.heightx,y = int(w/2),int(h/2) # 中心点while True:# 获取最新的图像,修正它们,并基于提供的RuntimeParameters(深度,点云,跟踪等)计算测量值。if zed.grab(runtime_parameters) == sl.ERROR_CODE.SUCCESS: # 相机成功获取图象# 获取图像timestamp = zed.get_timestamp(sl.TIME_REFERENCE.CURRENT) # 获取图像被捕获时的时间点zed.retrieve_image(image, sl.VIEW.RIGHT) # image:容器,sl.VIEW.LEFT:内容 ,右镜头img = image.get_data() # 转换成图像数组,便于后续的显示或者储存# 显示彩色图view = cv2.resize(img,(640,480))cv2.imshow("View", view) #显示图像key = cv2.waitKey(1) #waitkey控制着imshow的持续时间if key & 0xFF == 27: # esc退出breakif key & 0xFF == ord('s'): # 图像保存savePath = os.path.join("./images", "V{:0>3d}.png".format(i)) # 注意根目录是否存在"./images"文件夹cv2.imwrite(savePath, view)i = i + 1zed.close()if __name__ == "__main__":image_capture()
python3 test.py

最近好忙,都没时间写博客了。emm, 好开心又学到新知识!
希望本篇文章可以帮到你~~