update doc

This commit is contained in:
ykcheungab
2026-03-06 15:05:24 +08:00
parent c95e810e87
commit 44b14cded1
20 changed files with 359 additions and 178 deletions
+56 -38
View File
@@ -25,7 +25,7 @@ pip install orisys-{version}-{python-version}-{python-version}-{os}_{machine}.wh
```
如
```bash
pip install orisys-0.2.3-cp310-cp310-win_amd64.whl
pip install orisys-0.3.0-cp310-cp310-win_amd64.whl
```
3. **安装 CuPy(根据您的 CUDA 版本选择):**
@@ -53,17 +53,18 @@ pip install orisys-0.2.3-cp310-cp310-win_amd64.whl
import orisys
print(orisys.__version__)
```
---
***
## `Sensor` 类别
### 描述
`orisys`套件的核心类,用于从视频文件或实时摄像头中读取传感器图像,创建一个具体的传感器对象(实例)。并完成形变、光流及力信息的计算与管理。
### 输入参数
* **vid_src** (`int | str`, 必填): 传感器 ID、相机编号或视频路径。默认为 `0`。
* **isstitch** (`bool`,可选): 是否启用图像拼接,默认为 `True`。
* **cuda** (`bool`,可选): 是否使用 GPU cuda 加速,默认为 `False`。
* **verbose** (`bool`,可选): 是否输出初始化及运行过程中的详细日志信息,默认为 `False`。
* **config_name** (`str`,可选): 内部算法或传感器配置`json`文件路径,用于加载对应的参数配置,默认为 `prototype`。
* **config_name** (`str`,可选): 传感器配置`json`文件路径,用于加载对应的参数配置,默认为 `./config/ddjx01`。
* **cal_path** (`str`,可选): 复眼拼接校准文件路径,默认为 `./config/cal.npy`。有多个传感器同时运行时建议传感器类创建时建议填写,避免校准文件覆写。在首次运行时程序会在找不到文件时自动创建。
* **backend** (`str`,可选): 光流场解耦计算后端,默认为 `auto`,可选`cupy`,`opencl`,`cpu`。
* **verbose** (`bool`,可选): 是否输出初始化及运行过程中的详细日志信息,默认为 `False`。
### 返回
* `Sensor` 实例,用于后续图像采集、形变计算和数据读取操作。
@@ -78,27 +79,26 @@ sensor = Sensor(0)
sensor = Sensor("/data/data.mp4")
```
---
***
## 2. `Sensor.get_img` 方法
### 描述
采集并预处理一帧图像。
采集并预处理一帧图像并存到`Sensor` 类别中。
### 返回
* `np.ndarray`:处理后的灰度图(`uint8`,尺寸为`config_resolution_stitch`对应分辨率)。
* `np.ndarray`:处理后的BGR格式图像(`uint8`,尺寸为json文件中`resolution_stitch`对应分辨率)。
* `None`:当输入源读取失败(例如视频结束、摄像头断开)时返回。
### 状态更新
* 成功时更新`sensor`类里面的灰度图。
* 成功时更新`sensor`类里面的图像。
### 示例
```python
img = sensor.get_img()
if img is None:
break
sensor.get_img()
```
---
***
## 3. `Sensor.compute_deformation` 方法
@@ -108,35 +108,31 @@ if img is None:
`sensor`的形变场与力相关状态,并返回当前帧的光流场。
调用前置条件:需要先通过`get_img()`成功更新图像。
### 输入参数
* **check_motion**(`bool`,可选): 为 `True` 时先根据光流判断是否有运动,有运动才做 HHD 分解;为 `False` 时每帧都做 HHD。默认 `True`。
* **threshold**(`float`,可选): **check_motion** 功能的阈值,默认为`6`。
### 返回
无
* `bool`:是否接触到物体,如果**check_motion**为`False`时返回`None`。
### 示例
```python
img = sensor.get_img()
if img is None:
break
sensor.get_img()
sensor.compute_deformation()
is_touched = sensor.compute_deformation(check_motion=True, threshold=6)
# 步骤 2.3: 计算触碰点
if is_touched:
sensor.compute_contact()
```
---
***
## 4. `Sensor.compute_contact` 方法
### 描述
基于已计算的法向形变场进行接触区域分析,输出接触质心与轮廓等信息,并生成接触强度图。
基于已计算的法向形变场进行接触区域分析,输出接触质心与轮廓等信息,并生成接触深度图,默认配置在`json`文件中,可按需调节。
调用前置条件:需先执行`compute_deformation()`。
### 输入参数
* **min_contour_area** (`int`,可选): 多接触点模式下的最小轮廓面积阈值,默认为 `3000`。
* **min_magnitude** (`float`,可选): 最小光流幅度阈值,低于该阈值的区域不参与接触分析,默认为 `1.0`。
* **expansion_threshold** (`float`,可选): 扩张/收缩判定阈值,用于接触区域分割,默认为 `0.01`。
* **downsample_factor** (`int`,可选): 下采样因子,用于平滑与加速计算,默认为 `1`。
* **kernel_size** (`tuple`,可选): 形态学操作核大小,默认为 `(5, 5)`。
* **denoise_sigma** (`float`,可选): 高斯降噪强度;设为` 0 `可禁用降噪,默认为 `15`。
### 返回
`dict`为接触分析结果字典,至少包含以下键:
* **expansion_mask**: 扩张区域掩码(`np.ndarray`)。
@@ -160,7 +156,7 @@ centroid, contour, depth = sensor.read_info(
sensor.info.DEPTH,
)
```
---
***
## 4. `Sensor.read_info` 方法
### 描述
@@ -190,7 +186,7 @@ centroid, contour, depth = sensor.read_info(
时间戳
* TIMESTAMP: 时间戳字符串(HH:MM:SS),`str`。
注:H/W 由当前配置分辨率决定。
注:H/W 由当前`json`文件中的`resolution_stitch`配置分辨率决定。
### 返回
@@ -217,7 +213,7 @@ fps, fn, fx, fy = sensor.read_info(
# Example 2: 读取单个向量场(注意解包方式)
flow = sensor.read_info(sensor.info.VRAW)
```
---
***
## 5. `Sensor.disconnect` 方法
@@ -227,8 +223,30 @@ flow = sensor.read_info(sensor.info.VRAW)
建议在程序退出前调用以确保资源被正确释放。
---
---
***
***
# 可视化相关
## 1. `util.draw_arrows` 方法
### 输入参数
**frame**:背景图像
**optical_flow**:光流场
**threshold**:光流箭头显示阈值
**grid_spaceing**:光流箭头间距(pixel)
**arrow_scale**:箭头大小
**margin**:箭头最大长度/间距的比例
**colormap**:色图,如`cv2.COLORMAP_JET`
**below_threshold_color**:RGB格式的`uint8`颜色,如(0, 0, 255)
**edge_margin**: 不显示箭头边距(pixel)
### 返回
`np.ndarray` :箭头光流可视化图像
## 2. `util.draw_contact` 方法
***
***
# 配置标定相关
## 1. `list_config` 方法
@@ -239,7 +257,7 @@ flow = sensor.read_info(sensor.info.VRAW)
### 返回
* `list`: 内置传感器配置参数字典的名字列表。
---
***
## 2. `export_config` 方法
### 描述
@@ -257,8 +275,8 @@ flow = sensor.read_info(sensor.info.VRAW)
* 导出内置的`config_name`配置参数字典至`path`
---
---
***
***
## 常见问题解答 (FAQ)
### Q1:为什么必须先调用`get_img()`,再调用`compute_deformation()`?
@@ -284,4 +302,4 @@ A:若未指定或未找到标定文件,系统会在需要时创建新的拼
拼接结果异常通常与标定数据、拼接配置或输入图像质量有关,建议重新生成拼接标定并检查配置参数。
### Q6: 运行报错:“AttributeError: 'Stitcher' object has no attribute 'pos_default'”
A: 请检查视频源的编号是否正确,以及是否能正常打开视频源。在linux 使用`v4l2-ctl --list-devices` 列出设备
A: 请检查视频源的编号是否正确,以及是否能正常打开视频源。在linux 使用`v4l2-ctl --list-devices` 或 Windows使用`Get-PnpDevice -PresentOnly | Where-Object { $_.Class -match '^Camera' }` 列出摄像头设备。