loupekind straighten¶
Description¶
Detect a frame's tilt and record a level correction on its edit record. Nothing
applies it automatically, and it is baked to pixels only on
loupekind export. LoupeKind
proposes; you dispose.
Detection is an edge-orientation histogram: a level frame's edges cluster on the horizontal and vertical axes, so the dominant deviation from those axes is the tilt to undo. It is pure Go, reproducible, and uses no model. The correction is clamped to a sane maximum (default ±8°), and the raw detected angle is kept on the record as the basis, so the proposal is explainable and the Phase-4 learner can relate your overrides to it.
Non-destructive: only the frame's .loupekind/edits/<frame>.yaml record changes,
and the original is never touched. Undo it with
loupekind reset.
The shoot must already be culled with loupekind cull (--all
proposes across the keepers).
Usage¶
Name a single frame, or pass --all to propose across every keeper: exactly one
of the two. The shoot is taken from --shoot, or the current working
directory if omitted.
Flags¶
| Flag | Description | Default |
|---|---|---|
--shoot |
Shoot directory to scope to | the current directory |
--all |
Propose a correction for every keeper frame | false |
--max-angle |
Maximum correction in degrees (clamp) | the shoot's develop config (8) |
--output |
Output format: text or json |
text |
Examples¶
# Propose a level correction for one frame
loupekind straighten --shoot ~/shoots/smith-wedding 044-ceremony.jpg
# Batch-propose across every keeper
loupekind straighten --shoot ~/shoots/smith-wedding --all
A frame with no dominant horizontal/vertical structure to level (a flat sky, say) is reported and left untouched; a frame already level within the clamp proposes nothing.
See also¶
loupekind cull: judge the shoot (run first).loupekind reset: clear a frame's edits.loupekind export: bake edits to pixels (the only writer).