Track the two crowd rolls as _sheet_crowd3/3b — _refcheck is scratch and they are the only copy of the art
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5f53a686c8
commit
1ad2898530
4 files changed
+12
-6
No files matched your search
@@ -4,7 +4,8 @@
|
|||||||
# uv run --with pillow --with numpy --with scipy python assets/_crowdpass.py # install
|
# uv run --with pillow --with numpy --with scipy python assets/_crowdpass.py # install
|
||||||
# uv run --with pillow --with numpy --with scipy python assets/_crowdpass.py --review # to _refcheck
|
# uv run --with pillow --with numpy --with scipy python assets/_crowdpass.py --review # to _refcheck
|
||||||
#
|
#
|
||||||
# INPUT assets/_refcheck/crowd_seat.png + crowd_clap.png (see `_crowdroll.py`)
|
# INPUT assets/_sheet_crowd3.png + _sheet_crowd3b.png — the two rolls (see `_crowdroll.py`),
|
||||||
|
# tracked, because _refcheck is scratch and these are the only copy of the art
|
||||||
# OUTPUT assets/x_crowd{,2}.png · x_crowd_c{,2}.png · x_crowd_h{,2}.png · src/crowd.js
|
# OUTPUT assets/x_crowd{,2}.png · x_crowd_c{,2}.png · x_crowd_h{,2}.png · src/crowd.js
|
||||||
#
|
#
|
||||||
# THE PROBLEM THIS SOLVES. Ask a generator for "the same picture with some arms raised" and about a
|
# THE PROBLEM THIS SOLVES. Ask a generator for "the same picture with some arms raised" and about a
|
||||||
@@ -158,8 +159,8 @@ def write_table(boxes, h, w):
|
|||||||
|
|
||||||
|
|
||||||
def main(review):
|
def main(review):
|
||||||
A = np.asarray(Image.open(os.path.join(REFCHECK, 'crowd_seat.png')).convert('RGB'))
|
A = np.asarray(Image.open(os.path.join(HERE, '_sheet_crowd3.png')).convert('RGB'))
|
||||||
B = np.asarray(Image.open(os.path.join(REFCHECK, 'crowd_clap.png')).convert('RGB'))
|
B = np.asarray(Image.open(os.path.join(HERE, '_sheet_crowd3b.png')).convert('RGB'))
|
||||||
arms, lab = raisers(A, B)
|
arms, lab = raisers(A, B)
|
||||||
h, w = A.shape[:2]
|
h, w = A.shape[:2]
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
# _crowdroll.py — roll the crowd sheet itself: the SEATED master, and the arms-up frame of it.
|
# _crowdroll.py — roll the crowd sheet itself: the SEATED master, and the arms-up frame of it.
|
||||||
#
|
#
|
||||||
# uv run --with pillow --with requests python assets/_crowdroll.py seat # -> _refcheck/crowd_seat.png
|
# uv run --with pillow --with requests python assets/_crowdroll.py seat # -> _refcheck/crowd_seat.png
|
||||||
# uv run --with pillow --with requests python assets/_crowdroll.py clap # from the seated master
|
# uv run --with pillow --with requests python assets/_crowdroll.py clap # from that seated roll
|
||||||
#
|
#
|
||||||
# Then `_crowdpass.py` turns the two into an honest pair and grades them into the three courts.
|
# _refcheck is SCRATCH. A roll you decide to keep is copied to `assets/_sheet_crowd3.png` (seated)
|
||||||
|
# and `_sheet_crowd3b.png` (arms up) — those two are the tracked art, they are what `_crowdpass.py`
|
||||||
|
# reads, and they are the only copy there is. Then `_crowdpass.py` turns them into an honest pair
|
||||||
|
# and grades them into the three courts.
|
||||||
#
|
#
|
||||||
# WHY A SECOND SCRIPT. `_regen.py` cuts SPRITES out of a magenta field — every line of its canvas
|
# WHY A SECOND SCRIPT. `_regen.py` cuts SPRITES out of a magenta field — every line of its canvas
|
||||||
# block is about isolating figures on a key colour. The crowd is the opposite job: one continuous
|
# block is about isolating figures on a key colour. The crowd is the opposite job: one continuous
|
||||||
@@ -117,7 +120,9 @@ if __name__ == '__main__':
|
|||||||
os.makedirs(OUT, exist_ok=True)
|
os.makedirs(OUT, exist_ok=True)
|
||||||
what = sys.argv[1] if len(sys.argv) > 1 else 'seat'
|
what = sys.argv[1] if len(sys.argv) > 1 else 'seat'
|
||||||
if what == 'seat':
|
if what == 'seat':
|
||||||
ref = sys.argv[2] if len(sys.argv) > 2 else os.path.join(OUT, 'crowd_layout.png')
|
# the layout reference defaults to the seated master in the repo, so a re-roll keeps the
|
||||||
|
# stand's geometry rather than inventing a new one every time
|
||||||
|
ref = sys.argv[2] if len(sys.argv) > 2 else os.path.join(HERE, '_sheet_crowd3.png')
|
||||||
roll(SEAT, ref, os.path.join(OUT, 'crowd_seat.png'))
|
roll(SEAT, ref, os.path.join(OUT, 'crowd_seat.png'))
|
||||||
elif what == 'clap':
|
elif what == 'clap':
|
||||||
roll(CLAP, os.path.join(OUT, 'crowd_seat.png'), os.path.join(OUT, 'crowd_clap.png'))
|
roll(CLAP, os.path.join(OUT, 'crowd_seat.png'), os.path.join(OUT, 'crowd_clap.png'))
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.2 MiB |
Reference in new issue
Block a user