视觉学习(一)--获取ZED实时图像

最近在学习机器视觉,主要基于ZED做一些视觉算法,故记录下学习过程。本篇文章主要是获取ZED实时视频。

1.环境信息
摄像头:ZED  USB接口
系统:Ubuntu18.04
2.功能实现

创建python文件,test.py

import cv2
import numpy as np
import pyzed.sl as sl   #python3 zed api


def image_capture():
    zed = sl.Camera()
    # 设置相机的分辨率1080和采集帧率30fps
    init_params = sl.InitParameters()
    init_params.camera_resolution = sl.RESOLUTION.HD1080  # Use HD1080 video mode
    init_params.camera_fps = 30  # fps可选:15、30、60、100

    err = 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_resolution
    w, h = resolution.width , resolution.height
    x,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退出
                break
            if key & 0xFF == ord('s'):  # 图像保存
                savePath = os.path.join("./images", "V{:0>3d}.png".format(i))  # 注意根目录是否存在"./images"文件夹
                cv2.imwrite(savePath, view)
            i = i + 1
    zed.close()
    
if __name__ == "__main__":
    image_capture()
3.运行
python3 test.py

视觉学习(一)--获取ZED实时图像_第1张图片
最近好忙,都没时间写博客了。emm, 好开心又学到新知识!
希望本篇文章可以帮到你~~

你可能感兴趣的:(计算机视觉,python,计算机视觉)