ZED双目相机环境配置
官方资料:stereolabs/zed-python-api: Python API for the ZED SDK (github.com)
1,配置ZED相机环境
1.安装CUDA
查看电脑是否安装CUDA,安装过程可参考以下博文:
如何选择匹配的CUDA版本:https://blog.csdn.net/iamqianrenzhan/article/details/89343601
cuda安装教程+cudnn安装教程:https://blog.csdn.net/sinat_23619409/article/details/84202651
win10下CUDA和CUDNN的安装:https://blog.csdn.net/u010618587/article/details/82940528
2.安装ZED-SDK
下载与电脑操作系统以及CUDA版本对应的SDK,官方下载链接如下:
ZED SDK 3.8 - Download | Stereolabs

选择 <= 自己电脑CUDA版本的SDK

安装SDK成功后,我们进入ZED SDK文件夹中的tools子文件夹,运行ZED Explorer.exe 以及 ZED Depth Viewer.exe,查看ZED相机是否能正常启用工作。

报错:缺少dll,去bin文件夹下,找到dll,复制到tools下
3.安装ZED-Python-API(pyzed)
默认电脑已配置好Python-OpenCV环境,
![]()
pip install cythonpip install numpypip install opencv-python pip install pyopengl
ZED SDK 安装文件夹中有一个 Python 脚本(get_python_api.py),可以自动检测操作系统、CUDA 和 Python 版本并下载相应的预编译 Python API 包(pyzed)。

首先在ZED SDK文件夹中,找到get_python_api.py脚本,并获取其路径信息,最后我是在Anaconda Prompt运行该脚本。在下图中的运行结果可以看到检测出操作系统、CUDA版本等信息,并自动下载与其对应的ZED-Python-API 包。

如果遇到ZED-Python-API 包下载不下来,或者报错的情况。我们可以复制运行结果中的下载链接(如:上图中对应的API下载链接是 https://download.stereolabs.com/zedsdk/4.1/whl/win_amd64/pyzed-4.1-cp38-cp38-win_amd64.whl),在浏览器上直接访问,即可下载。
下载得到ZED-Python-API 包,也就是pyzed的.whl文件,将pyzed.whl文件放入ZED SDK 文件夹。

然后在Anaconda Prompt 输入 pip install 命令,对pyzed.whl文件进行安装,这样我们就完成了对ZED相机的Win11-Python开发环境配置。
![]()
进入bin文件夹下,将所有dll文件复制到E:\Anaconda3\envs\zed\Lib\site-packages\pyzed下
4、Hello ZED(Python)
配置好 ZED 的 Python 开发环境后,我们可以进行一个简单的教程案例来实现调用ZED的Python API。
在本例中,我们简单地检索ZED相机的序列号:打开 ZED相机,然后打印其序列号,然后关闭相机。
import pyzed.sl as sldef main():# Create a Camera objectzed = sl.Camera()# Create a InitParameters object and set configuration parametersinit_params = sl.InitParameters()init_params.sdk_verbose = False# Open the cameraerr = zed.open(init_params)if err != sl.ERROR_CODE.SUCCESS:exit(1)# Get camera information (ZED serial number)zed_serial = zed.get_camera_information().serial_numberprint("Hello! This is my serial number: {0}".format(zed_serial))# Close the camerazed.close()if __name__ == "__main__":main()
5,image_capture.py
import pyzed.sl as sl
import cv2
import os
import numpy as np
# 2. 捕获图像
def 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.STANDARDi = 0# 创建sl.Mat对象来存储图像(容器),Mat类可以处理1到4个通道的多种矩阵格式(定义储存图象的类型)image = sl.Mat() # 图像disparity = sl.Mat() # 视差值dep = sl.Mat() # 深度图depth = sl.Mat() # 深度值point_cloud = 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.LEFT) # image:容器,sl.VIEW.LEFT:内容img = image.get_data() # 转换成图像数组,便于后续的显示或者储存# 获取视差值zed.retrieve_measure(disparity,sl.MEASURE.DISPARITY,sl.MEM.CPU)dis_map = disparity.get_data()# 获取深度zed.retrieve_measure(depth,sl.MEASURE.DEPTH,sl.MEM.CPU) # 深度值zed.retrieve_image(dep,sl.VIEW.DEPTH) # 深度图depth_map = depth.get_data()dep_map = dep.get_data()# 获取点云zed.retrieve_measure(point_cloud,sl.MEASURE.XYZBGRA,sl.MEM.CPU)point_map = point_cloud.get_data()print('时间点',timestamp.get_seconds(),'中心点视差值',dis_map[x,y],'中心点深度值',depth_map[x,y],'中心点云数据',point_map[x,y])# 利用cv2.imshow显示视图,并对想要的视图进行保存view = np.concatenate((cv2.resize(img,(640,360)),cv2.resize(dep_map,(640,360))),axis=1)cv2.imshow("View", view)key = cv2.waitKey(1)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()image_capture()

代码中涉及的可选参数(点击关键字可进入官方文档链接)
分辨率选择

可捕获的视图

计算获得的视图

相关文章:
ZED双目相机环境配置
官方资料:stereolabs/zed-python-api: Python API for the ZED SDK (github.com) 1,配置ZED相机环境 1.安装CUDA 查看电脑是否安装CUDA,安装过程可参考以下博文: 如何选择匹配的CUDA版本:https://blog.csdn.net/iam…...
【最新鸿蒙应开发】——HarmonyOS沙箱目录
鸿蒙应用沙箱目录 1. 应用沙箱概念 应用沙箱是一种以安全防护为目的的隔离机制,避免数据受到恶意路径穿越访问。在这种沙箱的保护机制下,应用可见的目录范围即为应用沙箱目录。 对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱…...
SringBoot 如何使用HTTPS请求及Nginx配置Https
SringBoot 如何使用HTTPS请求及Nginx配置Https SringBoot 如何使用HTTPS请求生成证书导入证书及配制创建配置类将pfx转成.key和.pem Nginx 安装SSL依赖./configure 安装依赖编译安装完openssl后报了新错 Nginx配置 SringBoot 如何使用HTTPS请求 生成证书 由于业务数据在传输过…...
14.基于人类反馈的强化学习(RLHF)技术详解
基于人类反馈的强化学习(RLHF)技术详解 RLHF 技术拆解 RLHF 是一项涉及多个模型和不同训练阶段的复杂概念,我们按三个步骤分解: 预训练一个语言模型 (LM) ;训练一个奖励模型 (Reward Model,RM) …...
Linux Radix tree简介
文章目录 前言一、Radix tree简介二、Operations2.1 Lookup2.2 Insertion2.3 Deletion 三、Linux内核API3.1 初始化3.2 radix_tree_insert/delete3.3 radix_tree_preload3.4 radix_tree_lookup3.5 radix_tree_tag_set3.6 radix_tree_tagged 四、address_space4.1 简介4.2 相应数…...
maven 下载jar包加载顺序
在 Maven 构建过程中,依赖的下载源取决于你的 pom.xml 文件中的 配置、settings.xml 文件中的 和 配置,以及你的 Nexus 仓库的设置。以下是决定 Maven 从哪个仓库下载依赖的关键点: 仓库配置优先级 项目 pom.xml 文件中的仓库配置ÿ…...
新增多种图表类型,新增视频、流媒体、跑马灯组件,DataEase开源数据可视化分析工具v2.7.0发布
2024年6月11日,人人可用的开源数据可视化分析工具DataEase正式发布v2.7.0版本。 这一版本的功能变动包括:图表方面,新增对称条形图、桑基图、流向地图、进度条等图表类型,并对已有的仪表盘、指标卡、明细表、汇总表、水波图、象限…...
supOS工业操作系统的由来
作为“世界制造工厂”,我国拥有最庞大、最完整的工业企业集群与产业链,其中既有众多全球性制造巨头,又有数以百万计的中小型工厂。但这些企业的制造工厂在推进数字化、网络化、智能化进程时普遍受阻:1)系统软件定制程度…...
6spark期末复习
1)var a:Double5;var b:Int7;那么print(a*b) 2) var a:Int5; var bif(a>6) 7 println(b) 3)var a:Int16; var b:Int13; var cif(a>b) 5 else 7; println(c) 4. object TestDemo { print("B") def main(args: Array[String]): Unit { } } 5 def mai…...
C语言背景⾊、线条颜⾊和填充颜⾊有什么区别?何时使⽤?
一、问题 背景⾊、线条颜⾊和填充颜⾊,这⼏种颜⾊有什么区别?什么时候使⽤? 二、解答 背景⾊:是整个屏幕的底⾊,设置之后,屏幕空⽩区域都变成该颜⾊。 线条颜⾊:是画线时所⽤的颜⾊。⽂字输出也…...
Python 植物大战僵尸游戏【含Python源码 MX_012期】
简介: "植物大战僵尸"(Plants vs. Zombies)是一款由PopCap Games开发的流行塔防游戏,最初于2009年发布。游戏的概念是在僵尸入侵的情境下,玩家通过种植不同种类的植物来保护他们的房屋免受僵尸的侵袭。在游…...
搜索文档的好助手
搜索文档的好助手 AnyTXT SearcherEverything AnyTXT Searcher 文本内容搜索 下载:AnyTXT Searcher Everything 它能够基于文件名快速定文件和文件夹位置 下载:Everything...
如何计算 GPT 的 Tokens 数量?
基本介绍 随着人工智能大模型技术的迅速发展,一种创新的计费模式正在逐渐普及,即以“令牌”(Token)作为衡量使用成本的单位。那么,究竟什么是Token呢? Token 是一种将自然语言文本转化为计算机可以理解的…...
在远程服务器上安装虚拟环境
一、Anaconda环境安装 先下载Anaconda Linux版,并将其重命名为anaconda2020.sh wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.07-Linux-x86_64.sh --header"User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (K…...
《站在2024年的十字路口:计算机专业是否仍是高考生的明智之选?》
文章目录 每日一句正能量前言行业竞争现状行业饱和度和竞争激烈程度[^3^]新兴技术的影响[^3^]人才需求的变化[^3^]行业创新动态如何保持竞争力 专业与个人的匹配度判断专业所需的技术能力专业核心课程对学生的要求个人兴趣和性格特点专业对口的职业发展要求实践和经验个人价值观…...
从零手写实现 nginx-23-nginx 对于 cookie 的操作
前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …...
Python语言例题集(015)
#!/usr/bin/python3 #使用列表模仿队列的操作。 class Queue(): def init(self): self.queue[] def enqueue(self,data):self.queue.insert(0,data)def dequeue(self):if len(self.queue):return self.queue.pop()return "队列是空的"qQueue() q.enqueue(‘Grape’…...
Halcon C++ XLD 数据写入图片
1. xld转换为Region 生成与调用函数 gen_cross_contour_xld (CrossXld, Rows, UpdateCols, 6, 0) get_xld_region (CrossXld, xldRegions)函数实现 get_xld_region * 计算XLD个数 count_obj (BaseXld, Number) * 生成空的区域(结果) gen_empty_region…...
一文入门vim
先来波快问快答。 第一个问题,vim是什么? vim就是一文本编辑器。 第二个问题,我们为什么要使用vim? 好像在终端中可选择使用的文本编辑器也不多(其他有,但是相对而言vim用的比较广泛) 第三…...
植物ATAC-seq文献集锦(三)——果实发育篇
ATAC-seq在植物研究领域的应用我们已经介绍2期了,本期我们聚焦ATAC-seq技术在果实发育方向的应用案例。 植物ATAC-seq文献集锦(一)——基因组篇 植物ATAC-seq文献集锦(二)——生长发育篇 文献一:Ident…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...


