ZED 2i相机在配置ZED SDK、ZED API、官方示例zed-pytorch中遇到的问题详细解说(持续更新版)

第一步配置ZED 2i的环境——ZED SDK

如有任何问题求求求指出,求求求帮助!

这里我建议选择CUDA11.8的SDK 4.0版(今天是2023年9月17号,MaxWell架构另说),此时的pytorch还不能和CUDA12等合作,所以调用的时候明明不应该调用我的N卡上的cuda,但是还是调用了,所以要么装多个版本的CUDA(其实就是下载安装包之后,第一次全选下载包,第二次只选cuda,然后把他们都放在这个目录下(不知道对不对,反正通了))

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA

文件夹
这里只要在 系统变量–环境变量 里设置一下CUDA的路径就可以更改哪个版本的CUDA在工作了。

第一步配置ZED 2i的环境——ZED API

  • 注意:只有下载安装ZED SDK这API应该才能工作,不可跳

好像就一步:

https://www.stereolabs.com/docs/app-development/python/install/

cd C:\Program Files (x86)\ZED SDK
python3 get_python_api.py
(或者)python get_python_api.py

import pyzed.sl as sl的第一种

这里我犯了一个低级错误,因为我同时配了python3.11, 3.10, 3.6的三个conda环境(无头苍蝇式),然后把pyzed的名字版本点错了。希望大家检查下自己点对没。运行get运行不出来,给个check if的pyzed下载链接,点进去下载出来。然后install发现报错Import pyzed.sl as sl,importError:DLL load failed: 找不到指定的模块。
这里可以看这位大神的解决办法

  • zed2安装api,装了pyzed找不到sl的错误。我是python3.8的,翻了好多网友的回答,尝试了好多种办法。最后找到解决方案。将zed sdk 文件夹下的bin(一般文件夹的位置是C:\Program Files (x86)\ZED SDK\bin)中所有的dll文件都复制到D:\python\Lib\site-packages\pyzed(这是我的python安装目录,你们可以对应找一下)下面,成功!

原文链接:https://blog.csdn.net/qq_44847586/article/details/121379150

import pyzed.sl as sl的第二种

  • 当然还有另外一种可能,像我一样在另一台老笔记本配置的时候,复制了zed sdk/bin的DLL文件也没用,点开zed depth viewer被告知没有nvEncodeAPI64.dll。装上这个nvEncodeAPI64.dll在system32里就好了。下载dll的地址用的是dllme.com。

然后就可以顺利的运行tutorial的代码了。
有相同问题的其他解决办法的可以评论哇

配置zed-pytorch样例

https://github.com/stereolabs/zed-pytorch/tree/master

这是网址,下载代码,根据指示安装,此时建议把所有要求git clone的给我拉一个文件夹。运行python3的命令,成功会出现一堆字,失败会没有反应。(也可能是python)

有关THC

配置maskrcnn-benchmark的报错。此处参考:

https://blog.csdn.net/code_zhao/article/details/129172817

这个是出现没找到THC这个头文件的报错时,把每个后缀.cu的文件里面根据这里面的123点更改就好了。

https://blog.csdn.net/sinat_29957455/article/details/113334944

有关AT_CHECK

后来又报错AT_CHECK找不到。改成TORCH_CHECK,应该是版本问题。

运行zed_detector_py这个文件

有关torch._six、_download

报错找不到torch._six,这个条件是在if里的,直接改成str,没报错,不管了。(我不会改)

还有 _download报错, 应该还是版本问题,把前面的下划线删了就行。

运行zed_object_detection这个文件

有关api参数init_pos报错

报api的错,一个是init_pos报错说PositionalTrackingParameters的这个函数里找不到这个参数名字,搜一下发现参数名字现在叫init_position_,改了根本没用,直接删了(反正不会改)

运行predictor.py

有关cv2.putText(), 删了

cv2.putText(…)报错 parse.org。百度下这就是个显示字的,直接删了(不是

然后就成功了(完全不准确,问了大佬说没标定??ZED官网是不建议标定的,但是看了很多人也标定了

我的环境和版本号如下

conda的虚拟环境python3.10。建议不要开VPN下pip的包。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同时拍摄Depth,RGB,点云,并保存代码

这里有一些错误,但是懒得改了

import os
import datetime

import cv2
import numpy as np
import pyzed.sl as sl
from pyntcloud import PyntCloud


def main():
    zed = sl.Camera()
    init_params = sl.InitParameters()
    init_params.depth_mode = sl.DEPTH_MODE.ULTRA
    init_params.coordinate_units = sl.UNIT.MILLIMETER
    init_params.camera_resolution = sl.RESOLUTION.HD1080
    init_params.camera_fps = 30
    init_params.sdk_gpu_id = 0
    init_params.sdk_verbose = True # verbose是详细信息,看log有个log_file没用,需要手动清除log file

    status = zed.open(init_params)
    if status != sl.ERROR_CODE.SUCCESS:
        print("不管怎么错了,反正没成功")
        exit(1)

    runtime_parameters = sl.RuntimeParameters()

    # 创建sl.Mat对象来存储图像(容器),Mat类可以处理1到4个通道的多种矩阵格式(定义储存图象的类型)
    i = 0
    image = sl.Mat()
    disparity = sl.Mat()
    depth_value = sl.Mat()
    depth_image = sl.Mat()
    point_cloud = sl.Mat()
    resolution = zed.get_camera_information().camera_configuration.resolution
    w, h = resolution.width, resolution.height
    x, y = int(w / 2), int(h / 2)

    while True:
        if zed.grab(runtime_parameters) == sl.ERROR_CODE.SUCCESS:
            timestamp_image = zed.get_timestamp(sl.TIME_REFERENCE.IMAGE)
            timestamp_current = zed.get_timestamp(sl.TIME_REFERENCE.CURRENT)

            zed.retrieve_image(image, sl.VIEW.LEFT) # SIDE_BY_SIDE
            image_data = image.get_data()

            zed.retrieve_measure(disparity, sl.MEASURE.DISPARITY, sl.MEM.CPU)
            disparity_map = disparity.get_data()

            zed.retrieve_measure(depth_value, sl.MEASURE.DEPTH, sl.MEM.CPU)
            depth_value_data = depth_value.get_data()
            zed.retrieve_image(depth_image, sl.VIEW.DEPTH)
            depth_image_data = depth_image.get_data()

            zed.retrieve_measure(point_cloud, sl.MEASURE.XYZRGBA, sl.MEM.CPU)
            point_cloud_data = point_cloud.get_data()

            print('时间点 image', timestamp_image.get_seconds(), '时间点 current',
                  timestamp_current.get_seconds(), '中心点视差值', disparity_map[x, y], '中心点深度值',
                  depth_value_data[x, y], 'm', '中心点云数据', point_cloud_data[x, y])
            # view = np.concatenate((cv2.resize(image_data, (480, 270)), cv2.resize(depth_image_data, (480, 270)), cv2.resize(point_cloud_data, (480, 270))
            #                       ), axis=1)
            cv2.imshow("View", image_data)
            cv2.imshow('point', point_cloud_data)
            cv2.imshow('depth_image', depth_image_data)
            key = cv2.waitKey(1)
            if key & 0xFF == 27:  # esc退出
                break
            if key & 0xFF == ord(' '):  # 图像保存
                datetime_object = datetime.datetime.now()
                formatted_datetime = datetime_object.strftime("%Y-%m-%d_%H-%M-%S")
                savePath = "your path"
                # 注意根目录是否存在"./images"文件夹
                savePath_point = os.path.join("your path")  #
                savePath_depth= os.path.join("your path", "D{:0>3d}.png".format(i))  #

                cv2.imwrite(savePath, image_data)
                depth_value.write("your path/{}_{}.png".format(formatted_datetime, "depth"))
                # cv2.imwrite(savePath_depth,depth_value_data)
                filename = "your path/{}_{}.ply".format(formatted_datetime, "point_cloud")
                point_cloud.write(filename)
            i = i + 1

    zed.close()


if __name__ == "__main__":
    main()

持续更新中。。。

新人求指点

第二步使用ZED SDK

  1. 空格键
    在ZED Depth View中可以暂停画面。(虽然老手和聪明人可能对此不屑一顾,但是怎么没人告诉我啊啊啊?)
    P键可以在ZED Explorer中保存画面。

  2. 请更新到最新版ZED SDK,UI界面4.0.6版一直字体很小看不清。4.0.8解决了一些,但不是很好。
    ZED Explorer字体不适

  3. 已连接ZED相机但是ZED Explorer一直像上图一样Waiting for Camera
    此处请打开Depth View再重新打开Explorer。具体什么原理不清楚,但是好用。

(MaxWell架构GPU)打开Depth Viewer

本人笔记本的独显为MX130,打开后提示

ZED Depth Viewer: An NVIDIA GPU (PASCAL OR NEWER) is required to run this software (for Kepler and Maxwell GPU, please user CUDA 10.2 ZED SDK installers)

这里需要根据对应提示下载对应的SDK和CUDA。下载完成后如果仍提示此内容,需要到

C:\ProgramData\Stereolabs

这个文件夹下,直接删除整个文件夹,重新打开即可运行

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
要使用zed2i相机,您可以按照以下步骤进行设置和操作: 1. 首先,确保您已经启动了ZED节点。使用以下命令之一启动ZED节点: - 对于ZED相机:`roslaunch zed_wrapper zed.launch` - 对于ZED Mini相机:`roslaunch zed_wrapper zedm.launch` - 对于ZED 2相机:`roslaunch zed_wrapper zed2.launch` - 对于ZED 2i相机:`roslaunch zed_wrapper zed2i.launch` 2. 要设置相机参数,您可以修改`param/common.yaml`(所有相机通用参数)和`param/zed2.yaml`文件。在这些文件,您可以调整各种参数以满足您的需求。有关可用参数的详细信息,请参阅官方文档的参数调整部分。 3. 如果您想尝试教程,请进入`tutorials`文件夹,然后进入`tutorial 1 - hello ZED\csharp`文件夹。在此文件夹,您可以找到用于C#编程的示例代码。然后,创建一个名为`build`的新文件夹,用于构建代码。 请注意,以上是zed2i相机的基本使用教程。如果您需要更详细的操作指南或进一步的说明,请参考官方文档或相关教程资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [ZED2相机使用及检测目标功能](https://blog.csdn.net/SKGLZ/article/details/126279712)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [ZED2i相机使用环境搭建(Windows 环境下 C#API)](https://blog.csdn.net/sunsoldeir1/article/details/128379438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值