21 个不稳定版本 (3 个破坏性版本)
0.4.7 | 2024 年 8 月 12 日 |
---|---|
0.4.5 | 2024 年 6 月 1 日 |
0.3.8 | 2024 年 1 月 28 日 |
0.3.0 | 2023 年 12 月 29 日 |
0.1.2 | 2023 年 7 月 30 日 |
#52 in 图像
每月下载量 319
650KB
18K SLoC
RV Image
RV Image 是一个用 Rust 编写的图像远程查看器。您可以在远程 SSH 服务器或 Azure Blob 存储上查看图像。此外,RV Image 还附带了一个边界框、多边形和画笔标签工具,支持导入和导出 Coco 格式。目前已在 Windows 10、WSL 和 Mac OS 上进行测试。RV Image 主要基于 egui
和 image
。
安装
我们在发布页面上提供了一些为 Windows 和 MacOS 预先构建的二进制文件。
安装 Rust 后,您还可以
cargo install rvimage
安装最新稳定版本。
连接到远程
RV Image 通过
- SSH/SCP 使用
ssh2
crate 连接, - 本地文件夹 可能是远程存储的挂载点,
- http 服务器 通过
python -m http.server
启动,以及 - Azure Blob 存储库*.
以下是一些连接类型的示例配置。图像将缓存在本地的临时目录中。
可选的 http 导航服务器
当启动 RV 图像时,除了图形用户界面外,还会启动一个 HTTP 服务器作为额外的导航选项。默认地址为 127.0.0.1:5432
。如果端口被占用,则端口会增加。向 /file_label
发送 GET 请求时,将加载图像 file_label
。为此,file_label
必须位于当前打开的文件夹中。
配置
第一次启动 RV 图像时,会在 %USERPROFILE%/.rvimage/rv_cfg.toml
(或在 Linux 下可能是 $HOME/.rvimage/rv_cfg.toml
,未测试)创建一个配置文件 rv_cfg.toml
。以下我们将描述一些选项。目前 SSH 仅支持无密码的密钥文件授权。
# We support the connections "Local", "Ssh", "PyHttp", or "AzureBlob"
connection = "Ssh"
# "NoCache" for not caching at all or "FileCache" for caching files in a temp dir.
cache = "FileCache"
# Address of the http control server, default is 127.0.0.1:5432
# http_address = address:port
# If you do not want to use the temporary directory of your OS, you can add something else.
# tmpdir =
[file_cache_args]
n_prev_images = 2 # number of images to be cached previous to the selected one
n_next_images = 8 # number of images to be cached following the selected one
n_threads = 4 # number of threads to be used for background file caching
[ssh_cfg]
# Local folders can interactively be chosen via file dialog. Remote folders are restricted to one of the following list.
remote_folder_paths = [
"folder on your server",
"another folder"
]
address = "address:port" # port is usually 22
user = "your username"
ssh_identity_file_path = "somepath/.ssh/id_file_with_private_key"
[py_http_reader_cfg]
# The server is expected to be started via `python -m http.server` in some folder.
# The content of this folder is than accessible.
server_addresses = ['http://localhost:8000/']
[azure_blob_cfg]
# With a connection string you can view the images inside a blob storage.
# The connection_string_path should point to file that only contains the
# connection string.
connection_string_path = ''
container_name = ''
# The prefix is also called folder in the Microsoft Azure Storage Explorer.
# Currently, you cannot choose this interactively.
prefix = ''
标注工具
RV 图像包含两个标注工具
- 绘制边界框和多边形,并导出为 Coco 格式。
- 绘制笔刷线条,并以具有运行长度编码的 Coco 文件 导出。因此,我们忽略了 Coco 文件中通常伴随运行长度编码标注的
iscrowd=true
规范。
所有标注也以 json 格式存储在项目文件中。
除了标注工具外,我们还提供了筛选图像和不同方式缩放图像的功能。
缩放
您可以通过按住 Ctrl 键并按 + 或 - 键来随时缩放。
您还可以使用单独的缩放工具,并在图像区域上绘制一个框,以放大您想要看到的区域。
要移动缩放区域,请按住 Ctrl 键并使用左鼠标按钮拖动。
图像文件的筛选表达式
您可以为出现在左侧选择区域的图像文件进行筛选。输入的字符串将显示包含该字符串的路径名的图像。
除了基于路径名外,您还可以根据您使用的标签和属性进行筛选
nolabel
显示所有尚未使用当前活动工具进行标注的图像。anylabel
显示所有已使用当前活动工具进行标注的图像。label(<->)
显示所有具有当前活动工具的类<label-name>
标签的图像。例如,如果边界框工具处于活动状态,则label(foreground)
将显示所有包含类foreground
的边界框或多边形的图像。这仅当您的标签名称不包含空格时才有效。一些特殊字符也可能导致问题。tool(<tool-name>)
可以显示所有使用工具<tool-name>
标记的图像。例如,tool(Brush)
将显示所有使用画笔工具标记的图像。attr(<attr-name>:<attr-val>)
可以显示所有将属性<attr-name>
设置为<attr-val>
的图像。attr(<attr-name>:<attr-val-min>-<attr-val-max)
可以显示所有将属性<attr-name>
设置在<attr-val-min>
和<attr-val-max>
之间的图像。
可以结合使用过滤字符串 &&
、||
和 !
。例如
!nolabel
对应于anylabel
1055.png || label(cat)
可以显示所有图像,这些图像要么包含完整的路径名中的1055.png
,要么包含当前活动标记工具中的标签cat
。
边界框和多边形
RV Image配备了简单的边界框和多边形标记工具,可以导出和导入到Coco格式。为了导入能正常工作,需要先打开包含图像的文件夹。要过滤包含特定标签边界框的文件,可以将label(<name-of-label>)
放入过滤文本字段中。因此,需要将<name-of-label>
替换为标签的真实名称。要过滤未标记的文件,请使用nolabel
。包含文件名字符串的过滤器可以与&&
、||
和!
结合使用。
绘制多边形或矩形的两种主要方法
- 点击左键添加多边形的一个顶点。右键完成。点击左键和右键一次来绘制矩形。
- 拖动鼠标左键。多边形将跟随鼠标。
事件 | 动作 |
---|---|
拖动并释放鼠标左键 | 绘制多边形 |
第一次左键点击 | 开始绘制模式 |
$n$-次左键点击,其中$n>1$ | 添加多边形顶点 |
右键点击 | 完成绘制矩形或多边形 |
Alt + 绘制矩形/多边形期间的左键点击 | 删除最后添加的顶点 |
点击矩形的一个角 | 开始绘制模式并移动顶点 |
Ctrl + 在矩形上左键点击 | 选择矩形 |
Alt + 在矩形上左键点击 | 选择矩形,取消选择其他矩形并切换到当前选中的标签 |
按住右键 | 移动选中的矩形 |
Shift + 在矩形上左键点击 | 选择所有与该矩形和其他选中的矩形最大跨度重叠的矩形 |
Ctrl + A | 选择所有矩形 |
删除 | 删除选中的矩形 |
Ctrl + D | 取消选择所有矩形 |
Ctrl + H | 隐藏所有矩形 |
C | 在鼠标位置克隆选中的矩形并将选择移动到新矩形 |
Ctrl + C | 将所有选中的矩形复制到剪贴板 |
Ctrl + V | 从剪贴板粘贴矩形,不重复现有矩形 |
V | 在图像更改时激活自动粘贴 |
左⬅/右➡/上⬆/下⬇ | 移动所有选中的矩形的右下角 |
Ctrl + 左⬅/右➡/上⬆/下⬇ | 移动所有选中的矩形的左上角 |
Alt + 左⬅/右➡/上⬆/下⬇ | 移动所有选中的矩形 |
更改标签 | 选中的矩形/多边形的标签已更改 |
画笔工具
事件 | 动作 |
---|---|
左键点击 | 如果不是擦除模式,则绘制圆形,否则擦除闭合画笔轨迹 |
按住鼠标左键 | 如果不是擦除模式,则绘制画笔 |
E | 激活擦除模式 |
Ctrl + 鼠标左键点击 | 选择画笔 |
Ctrl + C/V/A/H/D | 查看边界框工具 |
删除 | 删除所选线段 |
更改标签 | 所选线段的标签已更改 |
T/I | 增加厚度/强度 |
Alt + T/I | 减少厚度/强度 |
连接到 Azure blob 存储需要 tokio
、futures
、azure_storage
和 azure_storage_blob
作为附加依赖项,因为使用的 Azure SDK 是异步实现的,需要 tokio
。然而,RV Image 的其余部分使用自己的小线程池实现。因此,Azure blob 存储连接作为 Cargo 特性 azure_blob
实现,默认启用。
依赖项
~37–67MB
~1M SLoC