Pickpix 是一个基于 Python + Tkinter 的多方法图片对比裁剪工具,适合以下场景:
- 多个方法结果并排对比查看
- 在同一坐标下对所有方法统一裁剪
- 支持本地目录与 SFTP 远程目录输入/输出
- 支持批量处理全部帧
当前版本的输入扫描规则为:
- 仅扫描文件名匹配 frame数字.exr 或 frame数字.png 的序列
- 例如 frame0001.exr、frame12.png
说明:程序内部会优先尝试读取 EXR,其次 PNG。输出统一保存为 PNG。
依赖见 requirements.txt:
- Pillow
- numpy
- opencv-python
- paramiko
- PyYAML
pip install -r requirements.txt
python pickpix.py支持两种本地输入方式。
方式 A:选择一个总目录,目录下每个子目录视为一个方法。
input_root/
method_a/
frame0001.exr
frame0002.exr
method_b/
frame0001.png
frame0002.png
方式 B:直接选择某个方法目录(目录本身包含 frame 序列)。
method_a/
frame1.exr
frame2.exr
远程输入与本地规则一致,只是路径在服务器上。
- 点击 添加输入文件夹(或 添加远程输入)。
- 点击 选择输出文件夹(或 选择远程输出)。
- 在左侧预览区切换到目标帧。
- 鼠标左键拖拽绘制裁剪框。
- 点击 添加到裁剪列表。
- 可重复添加多个裁剪框。
- 执行 批量裁剪当前帧 或 批量裁剪所有帧。
- 上一帧 / 下一帧:循环切换帧
- 跳转:输入帧号后跳转
- 鼠标滚轮:缩放(0.1x 到 5.0x)
- 重置1:1:恢复原始缩放并居中
- 右键拖拽:平移查看大图
注意:切换帧时会清空当前已添加的裁剪框列表。
- 左键拖拽:绘制矩形框
- 按住 Shift + 左键拖拽:绘制正方形框
- 添加到裁剪列表:保存当前框
- 裁剪框列表双击:删除对应框
- 清空所有裁剪框:删除全部框
右侧可手动输入:
- X、Y
- 宽度、高度
点击 应用坐标 后会立即更新预览和各方法画布上的框。
会输出:
- 每个方法下的裁剪图:frame帧号_box1.png、frame帧号_box2.png ...
- 每个方法下的可视化框图:frame帧号_boxes_map.png
- 输出根目录下的当前帧总览图:frame帧号_summary.png
会输出:
- 每个方法每一帧的裁剪图
- 每个方法每一帧的可视化框图
说明:该模式不会生成 summary 拼图。
output_root/
method_a/
frame0001_box1.png
frame0001_box2.png
frame0001_boxes_map.png
method_b/
frame0001_box1.png
frame0001_box2.png
frame0001_boxes_map.png
frame0001_summary.png
服务器预设来自 config/paths.yaml 的 servers 节点。
示例结构:
servers:
server_1:
label: Server 191
host: 1.2.3.4
port: 22
username: your_user
password: your_password你可以新增多个服务器预设,界面会自动读取并显示。
远程路径要求:
- 必须是绝对路径
- 必须以 / 开头