Find when a scoreboard-like box in one region changes
0:20CC-BY-SA-4.0 · Taco fleur
Proof frames
Tool calls
track_region_changes
Arguments
{
"source": "$CLIP",
"start_sec": 0,
"end_sec": 20,
"region": {
"x": 0.5796875,
"y": 0.83125,
"width": 0.275,
"height": 0.13333333333333333
},
"sample_fps": 4,
"max_candidates": 5
}
Result
{
"ok": true,
"data": {
"region": {
"x": 0.5796875,
"y": 0.83125,
"width": 0.275,
"height": 0.13333333333333333
},
"start_sec": 0,
"end_sec": 20,
"sample_fps": 4,
"sample_count": 80,
"temporal_resolution_sec": 0.25,
"scan_segments": [
{
"start_sec": 0,
"end_sec": 20,
"sample_count": 80
}
],
"threshold": 0.02,
"baseline_median": 0.000058,
"baseline_mad": 0.000049,
"steady_change": {
"detected": false,
"active_fraction": 0.177215,
"activity_floor": 0.001,
"note": "Most sample pairs are still; changes, if any, are the listed…"
},
"samples": [
{
"from_timestamp_sec": 0,
"timestamp_sec": 0.25,
"from_timestamp_provenance": {
"requested_timestamp": 0,
"decoded_timestamp": null,
"timestamp_delta": null
},
"timestamp_provenance": {
"requested_timestamp": 0.25,
"decoded_timestamp": null,
"timestamp_delta": null
},
"change_score": 0.000011,
"mean_abs_diff": 0.000016,
"changed_fraction": 0
},
{
"from_timestamp_sec": 0.25,
"timestamp_sec": 0.5,
"from_timestamp_provenance": {
"requested_timestamp": 0.25,
"decoded_timestamp": null,
"timestamp_delta": null
},
"timestamp_provenance": {
"requested_timestamp": 0.5,
"decoded_timestamp": null,
"timestamp_delta": null
},
"change_score": 0.000018,
"mean_abs_diff": 0.000028,
"changed_fraction": 0
},
{
"from_timestamp_sec": 0.5,
"timestamp_sec": 0.75,
"from_timestamp_provenance": {
"requested_timestamp": 0.5,
"decoded_timestamp": null,
"timestamp_delta": null
},
"timestamp_provenance": {
"requested_timestamp": 0.75,
"decoded_timestamp": null,
"timestamp_delta": null
},
"change_score": 0.000062,
"mean_abs_diff": 0.000096,
"changed_fraction": 0
},
{
"from_timestamp_sec": 0.75,
"timestamp_sec": 1,
"from_timestamp_provenance": {
"requested_timestamp": 0.75,
"decoded_timestamp": null,
"timestamp_delta": null
},
"timestamp_provenance": {
"requested_timestamp": 1,
"decoded_timestamp": null,
"timestamp_delta": null
},
"change_score": 0.000032,
"mean_abs_diff": 0.000049,
"changed_fraction": 0
},
{
"from_timestamp_sec": 1,
"timestamp_sec": 1.25,
"from_timestamp_provenance": {
"requested_timestamp": 1,
"decoded_timestamp": null,
"timestamp_delta": null
},
"timestamp_provenance": {
"requested_timestamp": 1.25,
"decoded_timestamp": null,
"timestamp_delta": null
},
"change_score": 0.001219,
"mean_abs_diff": 0.001875,
"changed_fraction": 0
},
"…trimmed 74 more"
],
"candidates": [
{
"from_timestamp_sec": 5.5,
"timestamp_sec": 5.75,
"from_timestamp_provenance": {
"requested_timestamp": 5.5,
"decoded_timestamp": null,
"timestamp_delta": null
},
"timestamp_provenance": {
"requested_timestamp": 5.75,
"decoded_timestamp": null,
"timestamp_delta": null
},
"change_score": 0.56084,
"mean_abs_diff": 0.430853,
"changed_fraction": 0.802246,
"rank": 1
},
{
"from_timestamp_sec": 2.25,
"timestamp_sec": 2.5,
"from_timestamp_provenance": {
"requested_timestamp": 2.25,
"decoded_timestamp": null,
"timestamp_delta": null
},
"timestamp_provenance": {
"requested_timestamp": 2.5,
"decoded_timestamp": null,
"timestamp_delta": null
},
"change_score": 0.560741,
"mean_abs_diff": 0.430699,
"changed_fraction": 0.802246,
"rank": 2
}
]
}
}
Question and answer
- Question
- When does the scoreboard change?
- Answer
- The tool reports changes in the box at 2.5, 5.75 seconds.
Check passedprecision 1.00 (min 1), recall 1.00 (min 1), tolerance 0.5s
How it was checked
- Truth from
- constructed
- Fixed at
Planted by this recipe before any tool ran: ffmpeg scaled the source's first 20 s to 640x480 px and overlaid a 176x64 px scoreboard-like box at x=371, y=399 px (Pillow pictures: dark slate body, amber body in the planted intervals, white bars in both). The box changes at 2.47, 5.79 s, the state switching at every time. The tolerance 0.5 s covers the tool's 0.25 s sample step.
A script drew the box over a fixed spot and changed its colour and brightness at 2 times it chose, so the answer is those planted times, not a real scoreboard; the tool takes the region as fractions of the frame, so the pixel box was converted.
Try it yourself
Use agentic-video on my video. A box in the picture is 176 by 64 pixels, with its top-left corner at x 371 px and y 399 px, in a 640 by 480 px frame. Convert that area to fractions of the frame and call track_region_changes on the first 20 seconds with sample_fps 4 and max_candidates 5. Tell me the times, in seconds, when the box changes colour.
- Get the .mcpb file and open it in Claude Desktop.
- Or:
pip install agentic-video
Clip and licence
- Licence
- CC-BY-SA-4.0
- Author
- Taco fleur
- Source
- commons.wikimedia.org
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.