update example and build

This commit is contained in:
bluepulsar
2026-01-10 19:20:17 +08:00
parent cd7ab65e84
commit dff2aef2fa
8 changed files with 123 additions and 20 deletions
+47 -6
View File
@@ -1,13 +1,54 @@
# orisys API 文档 # orisys API 文档
本文件提供了 `orisys` 套件的中文文档 本文件提供了 `orisys` 套件的中文文档
## 使用方法
1. 根据平台和python 版本下载对应的`.whl`文件 ## 准备 Python 开发环境
推荐下载 Anaconda,并使用Python 3.10
```
# 创建并激活虚拟环境
conda create -n orisys python=3.10
conda activate orisys
```
## 安装 CUDA Toolkit 和 cuDNN
在官方链接下载和安装:https://developer.nvidia.com/cuda/toolkit
或
在Anaconda环境中安装(例子使用cuda12.9):
https://anaconda.org/channels/nvidia/packages/cuda/overview
```
conda install nvidia/label/cuda-12.9.0::cuda-toolkit nvidia::cudnn
```
## SDK安装方法
1. 根据平台(win / linux)和python (如p38、p39、p310)版本下载对应的`.whl`文件
2. 运行pip命令安装: 2. 运行pip命令安装:
```bash ```bash
pip install orisys-{version}-{python-version}-none-{os}_amd64.whl pip install orisys-{version}-{python-version}-{python-version}-{os}_amd64.whl
``` ```
3. 并测试导入: 如
```bash
pip install orisys-0.2.0-cp310-cp310-win_amd64.whl
```
3. **安装 CuPy(根据您的 CUDA 版本选择):**
**方法 1:使用 extras(推荐)**
```bash
# 对于 CUDA 12.x
pip install orisys[cuda12]
# 对于 CUDA 13.x
pip install orisys[cuda13]
```
**方法 2:手动安装**
```bash
# 对于 CUDA 12.x
pip install cupy-cuda12x>=12.3.0
# 对于 CUDA 13.x
pip install cupy-cuda13x>=13.0.0
```
4. 测试导入:
```python ```python
import orisys import orisys
print(orisys.__version__) print(orisys.__version__)
@@ -21,8 +62,8 @@ print(orisys.__version__)
* **isstitch** (`bool`,可选): 是否启用图像拼接,默认为 `True`。 * **isstitch** (`bool`,可选): 是否启用图像拼接,默认为 `True`。
* **cuda** (`bool`,可选): 是否使用 GPU cuda 加速,默认为 `False`。 * **cuda** (`bool`,可选): 是否使用 GPU cuda 加速,默认为 `False`。
* **verbose** (`bool`,可选): 是否输出初始化及运行过程中的详细日志信息,默认为 `False`。 * **verbose** (`bool`,可选): 是否输出初始化及运行过程中的详细日志信息,默认为 `False`。
* **config_name** (`str`,可选): 内部算法或传感器配置名称,用于加载对应的参数配置,默认为 `prototype`。 * **config_name** (`str`,可选): 内部算法或传感器配置`json`文件路径,用于加载对应的参数配置,默认为 `prototype`。
* **cal_path** (`str`,可选): 复眼拼接校准文件路径,默认为 `./config/cal.npy`。有多个传感器同时运行时建议传感器类创建时建议填写,避免校准文件覆写。在首次运行时程序会在找不到文件时自动创建。
### 返回 ### 返回
* `Sensor` 实例,用于后续图像采集、形变计算和数据读取操作。 * `Sensor` 实例,用于后续图像采集、形变计算和数据读取操作。
+37 -1
View File
@@ -86,6 +86,30 @@ def build():
json_count += 1 json_count += 1
print(f"Copied {json_count} JSON config files") print(f"Copied {json_count} JSON config files")
# Create and copy examples folder (as part of the package)
examples_dst = pkg_dir / "examples"
examples_dst.mkdir(exist_ok=True)
# Create __init__.py for examples package
examples_init = examples_dst / "__init__.py"
with open(examples_init, 'w') as f:
f.write("# Examples for orisys package\n")
example_files = [
Path("example1_basic_pipeline.py"),
Path("example2_two_sensor_pipeline.py"),
]
example_count = 0
for example_file in example_files:
if example_file.exists():
shutil.copy(example_file, examples_dst)
example_count += 1
print(f"Copied example: {example_file.name}")
else:
print(f"Warning: Example file not found: {example_file}")
print(f"Copied {example_count} example files to orisys/examples/")
# Create setup.py for packaging # Create setup.py for packaging
setup_py_path = dist_dir / "setup.py" setup_py_path = dist_dir / "setup.py"
setup_content = f""" setup_content = f"""
@@ -100,12 +124,24 @@ setup(
version="{version}", version="{version}",
description="Orisys - Optical Tactile Sensor SDK (Nuitka Compiled)", description="Orisys - Optical Tactile Sensor SDK (Nuitka Compiled)",
author="Orisys", author="Orisys",
packages=['orisys'], packages=['orisys', 'orisys.examples'],
package_dir={{'': 'wheel_root'}}, package_dir={{'': 'wheel_root'}},
package_data={{ package_data={{
'orisys': ['*.pyd', 'configs/*.json'], 'orisys': ['*.pyd', 'configs/*.json'],
'orisys.examples': ['*.py'],
}}, }},
include_package_data=True, include_package_data=True,
install_requires=[
"numpy>=1.24.4",
"opencv-python>=4.10.0.84",
"opencv-contrib-python",
"scipy>=1.10.1",
],
extras_require={{
"cuda12": ["cupy-cuda12x>=12.3.0"],
"cuda13": ["cupy-cuda13x>=13.0.0"],
"cuda": ["cupy-cuda12x>=12.3.0"], # For backward compatibility, defaults to CUDA 12.x
}},
distclass=BinaryDistribution, distclass=BinaryDistribution,
zip_safe=False, zip_safe=False,
) )
+11
View File
@@ -106,6 +106,17 @@ setup(
'orisys': ['*.so', 'configs/*.json'], 'orisys': ['*.so', 'configs/*.json'],
}}, }},
include_package_data=True, include_package_data=True,
install_requires=[
"numpy>=1.24.4",
"opencv-python>=4.10.0.84",
"opencv-contrib-python",
"scipy>=1.10.1",
],
extras_require={{
"cuda12": ["cupy-cuda12x>=12.3.0"],
"cuda13": ["cupy-cuda13x>=13.0.0"],
"cuda": ["cupy-cuda12x>=12.3.0"], # For backward compatibility, defaults to CUDA 12.x
}},
distclass=BinaryDistribution, distclass=BinaryDistribution,
zip_safe=False, zip_safe=False,
) )
+2 -3
View File
@@ -17,13 +17,12 @@ import numpy as np
def main(): def main():
# 步骤1:创建传感器对象 (必要步骤),config_name为配置文件名(内置配置文件名)或路径(自定义配置文件路径) # 步骤1:创建传感器对象 (必要步骤),config_name为配置文件名(内置配置文件名)或路径(自定义配置文件路径)
# 方式1: 从视频文件读取 # 方式1: 从视频文件读取
sensor = orisys.Sensor("s1.mp4", isstitch=True, cuda=True, verbose=True,config_name="prototype") sensor = orisys.Sensor("s1.mp4", config_name="prototype", cal_path= "./config/cal.npy", isstitch=True, cuda=True, verbose=True)
# 方式2: 从摄像头读取(取消注释使用) # 方式2: 从摄像头读取(取消注释使用)
# sensor = orisys.Sensor(0, cuda=True, verbose=True, config_name="prototype") # sensor = orisys.Sensor(0, config_name="prototype", cal_path= "./config/cal.npy", isstitch=True, cuda=True, verbose=True)
print("\n按 'q' 退出程序,按 'r' 重置光流追踪器") print("\n按 'q' 退出程序,按 'r' 重置光流追踪器")
+10 -5
View File
@@ -28,7 +28,7 @@ from multiprocessing import Queue, Process
import time import time
def sensor_worker(sensor_id, vid_src, config_name, result_queue, stop_event): def sensor_worker(sensor_id, vid_src, config_name, cal_path, result_queue, stop_event):
""" """
传感器工作进程函数 传感器工作进程函数
@@ -46,7 +46,8 @@ def sensor_worker(sensor_id, vid_src, config_name, result_queue, stop_event):
isstitch=True, isstitch=True,
cuda=True, cuda=True,
verbose=False, # 减少子进程输出 verbose=False, # 减少子进程输出
config_name=config_name config_name=config_name,
cal_path=cal_path
) )
print(f"传感器 {sensor_id} 已启动") print(f"传感器 {sensor_id} 已启动")
@@ -116,12 +117,16 @@ def main():
num_sensors = 2 num_sensors = 2
sensor_configs = [ sensor_configs = [
{ {
'sensor_id': 0,
'vid_src': './s1.mp4', 'vid_src': './s1.mp4',
'config_name': 'prototype' 'config_name': 'prototype',
'cal_path': './config/cal.npy'
}, },
{ {
'sensor_id': 1,
'vid_src': './s1.mp4', # 可以改为不同的视频源或摄像头索引 'vid_src': './s1.mp4', # 可以改为不同的视频源或摄像头索引
'config_name': 'prototype' 'config_name': 'prototype',
'cal_path': './config/cal2.npy'
}, },
] ]
@@ -138,7 +143,7 @@ def main():
for i, config in enumerate(sensor_configs): for i, config in enumerate(sensor_configs):
p = Process( p = Process(
target=sensor_worker, target=sensor_worker,
args=(i, config['vid_src'], config['config_name'], result_queues[i], stop_events[i]) args=(i, config['vid_src'], config['config_name'], config['cal_path'], result_queues[i], stop_events[i])
) )
p.start() p.start()
processes.append(p) processes.append(p)
+5 -1
View File
@@ -1,4 +1,8 @@
cupy_cuda12x>=12.3.0 # CuPy - Install the appropriate version based on your CUDA version:
# For CUDA 12.x: pip install cupy-cuda12x>=12.3.0
# For CUDA 13.x: pip install cupy-cuda13x>=13.0.0
# Or use extras: pip install orisys[cuda12] or pip install orisys[cuda13]
numpy>=1.24.4 numpy>=1.24.4
opencv_python>=4.10.0.84 opencv_python>=4.10.0.84
opencv-contrib-python opencv-contrib-python
+10 -3
View File
@@ -19,9 +19,16 @@ setup(
}, },
include_package_data=True, include_package_data=True,
install_requires=[ install_requires=[
"numpy", "numpy>=1.24.4",
"opencv-python", "opencv-python>=4.10.0.84",
"scipy", "opencv-contrib-python",
"scipy>=1.10.1",
], ],
extras_require={
"cuda12": ["cupy-cuda12x>=12.3.0"],
"cuda13": ["cupy-cuda13x>=13.0.0"],
# For backward compatibility, 'cuda' defaults to CUDA 12.x
"cuda": ["cupy-cuda12x>=12.3.0"],
},
python_requires=">=3.8", python_requires=">=3.8",
) )
+1 -1
View File
@@ -446,7 +446,7 @@ class Stitcher:
n_boxes = 0 n_boxes = 0
bk_thresh = 0 # initial black threshold bk_thresh = 0 # initial black threshold
bk_thresh_step = 5 bk_thresh_step = 5
bk_thresh_max = 125 bk_thresh_max = 100
# Also include a low global V threshold to capture colored but dark tiles # Also include a low global V threshold to capture colored but dark tiles
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)