vision (Vision)
vision 模块提供视觉与图像相关接口,包括图像采集、相机控制、屏幕截图、3D 点云显示、ROS 视觉控制等功能,支持计算机视觉算法的开发与验证。
模块功能
| 功能 |
说明 |
| 图像采集 |
从相机、屏幕、仿真环境获取图像数据 |
| 相机控制 |
相机参数配置、视角控制、运动控制 |
| 屏幕截图 |
屏幕内容的实时捕获和录制 |
| 3D 点云显示 |
点云数据的可视化显示和处理 |
| ROS 视觉控制 |
与 ROS 视觉系统的集成和控制 |
| Open3D 集成 |
Open3D 库的点云和网格处理功能 |
核心类与接口
| 类/接口 |
说明 |
VisionCaptureApi |
视觉采集核心类,支持多种图像源 |
CameraCtrlApi |
相机控制接口,支持参数和运动控制 |
ScreenCaptureApi |
屏幕截图接口,支持区域和全屏捕获 |
Open3DApi |
Open3D 集成接口,支持点云和网格处理 |
VisionConfig |
视觉配置管理,支持参数持久化 |
RosCtrl |
ROS 视觉控制接口 |
图像源支持
| 图像源 |
说明 |
| USB 相机 |
本地 USB 摄像头实时视频流 |
| 网络相机 |
IP 摄像头的网络视频流 |
| 仿真相机 |
RflySim3D/UE 中的虚拟相机 |
| 屏幕捕获 |
桌面屏幕的实时截图 |
| 图像文件 |
本地图像文件的读取和回放 |
| ROS 图像 |
ROS 话题中的图像数据 |
使用场景
计算机视觉算法开发
- 目标检测与识别算法的训练和验证
- 图像分类和语义分割实验
- 视觉 SLAM 和定位算法开发
无人机视觉应用
- 无人机航拍图像处理
- 视觉导航和避障系统
- 基于视觉的目标跟踪
仿真环境视觉
- 从仿真环境获取训练数据
- 域随机化数据增强
- 视觉算法的 sim-to-real 迁移
数据记录与回放
- 飞行过程中的视觉数据记录
- 数据集的创建和管理
- 历史数据的回放和分析
代码示例
基本图像采集
from RflySimSDK.vision import VisionCaptureApi
# 创建视觉采集实例
vision = VisionCaptureApi()
# 连接到仿真相机(RflySim3D)
vision.connect(
source='rflysim3d',
ip='127.0.0.1',
port=9999
)
# 设置图像分辨率
vision.setResolution(640, 480)
# 开始图像采集
vision.startCapture()
# 获取一帧图像
frame = vision.getFrame()
# 保存图像
frame.save('capture.png')
# 停止采集
vision.stopCapture()
相机参数控制
from RflySimSDK.vision import CameraCtrlApi
# 创建相机控制实例
camera = CameraCtrlApi()
# 连接到相机
camera.connect('127.0.0.1', 9999)
# 设置相机参数
camera.setExposure(0.01) # 曝光时间 10ms
camera.setGain(1.5) # 增益 1.5
camera.setWhiteBalance(5500) # 色温 5500K
# 控制相机运动
camera.moveTo([10, 5, 3]) # 移动到位置
camera.rotateTo([0, -30, 45]) # 旋转到角度(俯仰-30,偏航45)
camera.setFOV(90) # 设置视场角
# 跟随模式
camera.followTarget(
target_id=1,
offset=[-5, -5, 2],
smooth=True
)
点云显示(Open3D)
from RflySimSDK.vision import Open3DApi
import numpy as np
# 创建 Open3D 接口
o3d = Open3DApi()
# 创建点云数据
points = np.random.rand(1000, 3) # 1000 个随机点
colors = np.random.rand(1000, 3) # 随机颜色
# 创建点云对象
point_cloud = o3d.createPointCloud(points, colors)
# 显示点云
o3d.show(point_cloud)
# 添加坐标系
o3d.addCoordinateFrame(size=1.0)
# 从 Lidar 数据创建点云
lidar_data = o3d.readLidarData('lidar_scan.bin')
o3d.visualizeLidar(lidar_data)
性能优化
| 优化项 |
说明 |
| 图像压缩 |
使用 JPEG/PNG 压缩减少传输带宽 |
| 分辨率自适应 |
根据网络状况动态调整分辨率 |
| 帧率控制 |
限制最大帧率避免资源占用过高 |
| 硬件加速 |
使用 GPU 加速图像处理 |
| 缓存机制 |
图像数据的本地缓存和预加载 |
相关资源
注意:本文档为 vision 模块的索引页面。各接口的详细 API 说明请参考对应模块的独立文档页面。