在做有的项目时,需要通过简单的代码利用ZED_SDK结合OpenCV显示ZED2双目相机图像
官方给了相关代码示例:
但是太多、太复杂了,并且难找,有时候我们并不需要那些复杂的功能,或者我们需要简单的打开相机的代码,这样才能更简便的去和我们别的功能的代码相结合。
下面是利用ZED_SDK结合OpenCV显示ZED2双目相机图像的简单代码示例:
import pyzed.sl as sl
import cv2
import numpy as np
def main():
# 初始化 ZED 相机
zed = sl.Camera()
# 设置相机初始化参数
init_params = sl.InitParameters()
init_params.camera_resolution = sl.RESOLUTION.HD720
init_params.depth_mode = sl.DEPTH_MODE.NONE
# 打开相机
err = zed.open(init_params)
if err != sl.ERROR_CODE.SUCCESS:
exit(1)
# 创建 Mat 对象用于存储左目和右目图像
image_left = sl.Mat()
image_right = sl.Mat()
# 循环获取和显示图像
key = ''
while key != 113: # 按 'q' 键退出
if zed.grab() == sl.ERROR_CODE.SUCCESS:
# 获取左目和右目图像
zed.retrieve_image(image_left, sl.VIEW.LEFT)
zed.retrieve_image(image_right, sl.VIEW.RIGHT)
# 将图像转换为 OpenCV 格式以显示
image_left_ocv = image_left.get_data()
image_right_ocv = image_right.get_data()
# 将左右图像并排合并
images_combined = np.hstack((image_left_ocv, image_right_ocv))
# 使用 OpenCV 显示图像
cv2.imshow("ZED Stereo", images_combined)
# 等待按键事件
key = cv2.waitKey(5)
# 关闭相机
zed.close()
if __name__ == "__main__":
main()
我安装的ZED_SDK版本的4.0的。
如果只想打开左相机,代码示例如下:
import pyzed.sl as sl
import cv2
def main():
# 初始化 ZED 相机
zed = sl.Camera()
# 设置相机初始化参数
init_params = sl.InitParameters()
init_params.camera_resolution = sl.RESOLUTION.HD720 # 设置分辨率为 HD720
init_params.depth_mode = sl.DEPTH_MODE.NONE # 不需要深度信息
# 打开相机
err = zed.open(init_params)
if err != sl.ERROR_CODE.SUCCESS:
exit(1)
# 创建一个 Mat 对象用于存储左目图像
image_left = sl.Mat()
# 循环获取和显示图像
key = ''
while key != 113: # 按 'q' 键退出
if zed.grab() == sl.ERROR_CODE.SUCCESS:
# 获取左目图像
zed.retrieve_image(image_left, sl.VIEW.LEFT)
# 将图像转换为 OpenCV 格式以显示
image_left_ocv = image_left.get_data()
# 使用 OpenCV 显示图像
cv2.imshow("ZED Left Eye", image_left_ocv)
# 等待按键事件
key = cv2.waitKey(5)
# 关闭相机
zed.close()
if __name__ == "__main__":
main()
如果只想打开右相机,代码示例如下:
import pyzed.sl as sl
import cv2
def main():
# 初始化 ZED 相机
zed = sl.Camera()
# 设置相机初始化参数
init_params = sl.InitParameters()
init_params.camera_resolution = sl.RESOLUTION.HD720
init_params.depth_mode = sl.DEPTH_MODE.NONE
# 打开相机
err = zed.open(init_params)
if err != sl.ERROR_CODE.SUCCESS:
exit(1)
# 创建一个 Mat 对象用于存储右目图像
image_right = sl.Mat()
# 循环获取和显示图像
key = ''
while key != 113: # 按 'q' 键退出
if zed.grab() == sl.ERROR_CODE.SUCCESS:
# 获取右目图像
zed.retrieve_image(image_right, sl.VIEW.RIGHT)
# 将图像转换为 OpenCV 格式以显示
image_right_ocv = image_right.get_data()
# 使用 OpenCV 显示图像
cv2.imshow("ZED Right Eye", image_right_ocv)
# 等待按键事件
key = cv2.waitKey(5)
# 关闭相机
zed.close()
if __name__ == "__main__":
main()