import pyzed.sl as sl
import cv2
import numpy as np
import os
class CameraZed2:
def __init__(self,resolution=None,fps=30,depthMode = None):
self.zed = sl.Camera()
self.input_type = sl.InputType()
self.init_params = sl.InitParameters(input_t=self.input_type)
# 設置分辨率
if resolution == "2K":
self.init_params.camera_resolution = sl.RESOLUTION.HD2K
elif resolution == "1080":
self.init_params.camera_resolution = sl.RESOLUTION.HD1080
else: # 默認
self.init_params.camera_resolution = sl.RESOLUTION.HD720
self.init_params.camera_fps = fps # 設置幀率
# 設置獲取深度信息的模式
if depthMode == "PERFORMANCE":
self.init_params.depth_mode = sl.DEPTH_MODE.PERFORMANCE
elif depthMode == "QUALITY":
self.init_params.depth_mode = sl.DEPTH_MODE.QUALITY
else:
self.init_params.depth_mode = sl.DEPTH_MODE.ULTRA
self.init_params.coordinate_units = sl.UNIT.MILLIMETER # 單位毫米
# 打開相機
err = self.zed.open(self.init_params)
if err != sl.ERROR_CODE.SUCCESS:
print(repr(err))
self.zed.close()
exit(1)
self.runtime = sl.RuntimeParameters()
self.runtime.sensing_mode = sl.SENSING_MODE.STANDARD
self.savepath = '' # 標定圖像保存的路徑
def grab_imgs(self): # 捕獲左右圖像用于相機標定(文件夾自動創(chuàng)建)
img_l = sl.Mat()
img_r = sl.Mat()
num = 0
# 自動創(chuàng)建保存文件夾(分別存放左圖和右圖)
import time
name = time.strftime("%Y-%m-%d-%H-%M", time.localtime())
self.savepath_L = './images/%s/L' % name
self.savepath_R = './images/%s/R' % name
os.makedirs(self.savepath_L,exist_ok=True)
os.makedirs(self.savepath_R,exist_ok=True)
while True:
if self.zed.grab(self.runtime) == sl.ERROR_CODE.SUCCESS:
self.zed.retrieve_image(img_l,sl.VIEW.LEFT)
self.img_l = img_l.get_data()
self.zed.retrieve_image(img_r,sl.VIEW.RIGHT)
self.img_r = img_r.get_data()
view = np.concatenate((self.img_l,self.img_r),axis=1)
cv2.imshow('View',cv2.resize(view,(1920,540)))
key = cv2.waitKey(1)
if key & 0xFF == ord('s'): # 按S同時保存左右圖像
savePath_L = os.path.join(self.savepath_L, "L{:0>3d}.png".format(num))
print(savePath_L)
cv2.imwrite(savePath_L, self.img_l)
savePath_R = os.path.join(self.savepath_R, "R{:0>3d}.png".format(num))
cv2.imwrite(savePath_R, self.img_r)
num +=1
if key & 0xFF == 27: # 按esc退出視圖窗口
break
if __name__ == "__main__":
cam = CameraZed2(resolution='1080',fps=30)
cam.grab_imgs() # 獲取標定圖像(左、右圖)
注:在根目錄中創(chuàng)建一個images的文件夾文章來源地址http://www.zghlxwxcb.cn/news/detail-706969.html
文章來源:http://www.zghlxwxcb.cn/news/detail-706969.html
到了這里,關于ZED相機獲取圖像python的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!