Python之获取指定深度目录

import os

def get_dirs_depth(path, depth): 
    current_dirs = [root for root, _, _ in os.walk(path) if str(root).count("/")==depth]
    return current_dirs or [""] # 如果没有则返回空列表

!tree work # 显示文件目录树(jupyter中运行cmd命令加“!”)
path='work'
depth=2
get_dirs_depth(path, depth)

##结果如下:
'''
work
├── Untitled Folder
├── Untitled Folder 1
│   └── Untitled Folder
│       ├── Untitled Folder
│       └── untitled.txt
├── Untitled Folder 2
│   └── Untitled Folder
└── Untitled Folder 3
    ├── Untitled Folder
    └── Untitled Folder 1

9 directories, 1 file
['work/Untitled Folder 3/Untitled Folder 1',
 'work/Untitled Folder 3/Untitled Folder',
 'work/Untitled Folder 2/Untitled Folder',
 'work/Untitled Folder/.ipynb_checkpoints',
 'work/Untitled Folder 1/Untitled Folder']
'''
### 使用Python深度相机读取深度值 以下是两种方法来实现通过Python获取深度相机的深度值,分别基于OpenCV和Intel RealSense SDK。 #### 方法一:使用OpenCV与ZED SDK 以下是一个完整的代码示例,展示如何使用ZED Camera 和 OpenCV 来捕获并显示深度值: ```python import sys import time import cv2 import pyzed.sl as sl # 创建相机对象 zed = sl.Camera() # 配置相机参数 init_params = sl.InitParameters() init_params.camera_resolution = sl.RESOLUTION.HD720 # 设置分辨率 init_params.depth_mode = sl.DEPTH_MODE.PERFORMANCE # 性能优先模式 # 打开相机 status = zed.open(init_params) if status != sl.ERROR_CODE.SUCCESS: print("Failed to open ZED camera.") exit(1) while True: # 捕获图像 if zed.grab() == sl.ERROR_CODE.SUCCESS: depth_mat = sl.Mat() zed.retrieve_measure(depth_mat, sl.MEASURE.DEPTH) # 获取深度图 # 转换为NumPy数组以便后续处理 depth_array = depth_mat.get_data() # 提取特定像素位置 (x=320, y=240) 的深度值作为示例 x, y = 320, 240 if 0 <= x < depth_array.shape[1] and 0 <= y < depth_array.shape[0]: depth_value = depth_array[y][x] print(f"Pixel ({x}, {y}) Depth Value: {depth_value} mm") # 按下 'q' 键退出循环 key = cv2.waitKey(1) if key & 0xFF == ord('q'): break # 关闭相机 zed.close() ``` 此代码展示了如何从指定坐标 `(x,y)` 中提取深度值[^1]。注意 `get_data()` 返回的是 NumPy 数组形式的数据结构,便于进一步操作。 --- #### 方法二:使用Realsense SDK 如果采用 Intel Realsense D435/L515 系列设备,则可以通过其官方SDK轻松访问深度数据。下面是一段示范程序: ```python import numpy as np import cv2 import pyrealsense2 as rs pipeline = rs.pipeline() config = rs.config() # 启用深度流配置 config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30) # 开始管道传输 profile = pipeline.start(config) try: while True: frames = pipeline.wait_for_frames() depth_frame = frames.get_depth_frame() if not depth_frame: continue # 将深度帧转成Numpy数组 depth_image = np.asanyarray(depth_frame.get_data()) # 访问某个具体坐标的深度值 (单位毫米mm),例如(x=320, y=240) x, y = 320, 240 if 0 <= x < depth_image.shape[1] and 0 <= y < depth_image.shape[0]: distance_mm = depth_image[y, x] print(f"Pixel ({x},{y}) Distance: {distance_mm} mm") # 可视化深度图像(可选) depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET) cv2.imshow('Depth Map', depth_colormap) # ESC键退出 if cv2.waitKey(1) == 27: break finally: pipeline.stop() cv2.destroyAllWindows() ``` 该脚本实现了从摄像头实时采集深度信息,并打印出给定像素点处的距离数值[^2]。此外还提供了简单的可视化功能用于调试目的。 对于安装Intel RealSense SDK,在Windows环境下推荐按照官网指南执行相应步骤,但需特别留意版本选择问题以免遇到兼容性障碍[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值