# Anti Prestige Tool Prototype queue-position reader for Arma Reforger. ## Current State The working script is: ```bash python3 reforger_queue_read.py ``` It reads the queue number by: 1. Cropping the queue-number region. 2. Thresholding orange UI pixels. 3. Splitting connected digit components. 4. Matching digits against synthetic `Roboto-Condensed` templates. No Tesseract/OpenCV/Pillow dependency is currently required. ## Dataset Validation Dataset: ```text /home/scootz/Pictures/codex-dataset ``` Validation command: ```bash python3 reforger_queue_read.py --dataset /home/scootz/Pictures/codex-dataset --expect-filenames ``` Current result: ```text summary: 14 passed, 0 failed ``` The default crop is derived from this 2560x1440 reference: ```text reference-size: 2560x1440 reference-crop: x=1050 y=620 width=100 height=60 scale-mode: width ``` `scale-mode=width` means the crop scales uniformly from the screenshot width. This handles the current dataset better than independent width/height scaling because the dataset images are slightly shorter than 1440 pixels, while the UI coordinates still match a 1440p layout. ## Real Screenshot Calibration Dataset: ```text datasets/scootz-dataset ``` Files: ```text 1920x1080.png 2160x1440.png # actual image size is 2560x1440 ``` Validation command: ```bash python3 reforger_queue_read.py --dataset datasets/scootz-dataset --show-crop --debug ``` Current result: ```text datasets/scootz-dataset/1920x1080.png crop=788,465,75,45 datasets/scootz-dataset/1920x1080.png 22 datasets/scootz-dataset/2160x1440.png crop=1050,620,100,60 datasets/scootz-dataset/2160x1440.png 24 ``` Measured digit box positions: ```text 1440p digit bbox abs=(1080,636)-(1118,666) 1440p digit bbox rel=(0.421875,0.441667)-(0.436719,0.462500) 1080p digit bbox abs=(810,477)-(838,500) 1080p digit bbox rel=(0.421875,0.441667)-(0.436458,0.462963) ``` The match is exact enough to use width-scaled coordinates for normal 16:9 1080p and 1440p users. Default search crop relative to a 2560x1440 screen: ```text x=1050 / 2560 = 0.410156 y=620 / 1440 = 0.430556 w=100 / 2560 = 0.039063 h=60 / 1440 = 0.041667 ``` Resolved default crop examples: ```text 2560x1440 -> x=1050 y=620 width=100 height=60 1920x1080 -> x=788 y=465 width=75 height=45 ``` ## Single-Monitor Capture Direction The old approach captured the whole KDE desktop across all screens. That is not ideal. List available KWin outputs: ```bash python3 reforger_queue_read.py --list-screens ``` Example output: ```text DP-2 enabled 0,360,1920x1080 DP-3 enabled 1920,0,2560x1440 ``` Preferred live usage is to pass the screen containing Reforger explicitly: ```bash python3 reforger_queue_read.py --capture --screen DP-3 --show-crop --debug ``` The tool first tries KWin's screen-specific screenshot API. On this machine KWin currently rejects that direct API for an untrusted process, so the tool falls back to: 1. Capturing the full Spectacle desktop. 2. Cropping to the requested KWin output geometry. 3. Applying the queue-number crop inside that monitor image. This still avoids the "wrong current monitor" problem. It does not yet avoid the temporary full-desktop screenshot in the fallback path. The script also supports Spectacle's current-monitor capture: ```bash python3 reforger_queue_read.py --capture ``` This uses: ```bash spectacle --background --current --nonotify --output ``` That should capture only one monitor. For this to work reliably, Reforger should be focused or the relevant monitor should be the current KDE monitor. Whole-desktop capture is still available for fallback: ```bash python3 reforger_queue_read.py --capture --capture-mode fullscreen ``` Live DP-3 test result from 2026-05-01: ```text crop=1050,620,100,60 19 ``` ## Useful Commands Read a full single-monitor screenshot: ```bash python3 reforger_queue_read.py --image /path/to/screenshot.png --debug ``` Show the crop selected for a screenshot: ```bash python3 reforger_queue_read.py --image /path/to/screenshot.png --show-crop --debug ``` Read a full screenshot with an explicit crop: ```bash python3 reforger_queue_read.py --image /path/to/screenshot.png --crop 1050,620,100,60 --debug ``` Read already-cropped number images: ```bash python3 reforger_queue_read.py --dataset /path/to/cropped-digits --cropped --expect-filenames ``` ## Next Step Get real full screenshots from the game on the actual monitor setup and validate: ```bash python3 reforger_queue_read.py --image /path/to/real-full-screenshot.png --debug ``` If the default crop misses, use ImageMagick to crop around the queue value, then update `--reference-crop`.