Files
IC-Layout-Generate/scripts/expand_skeleton.py
2025-11-24 20:34:50 +08:00

44 lines
1.1 KiB
Python

#!/usr/bin/env python3
"""
expand_skeleton.py
Rasterize Manhattan polylines (JSON) back to a binary layout image.
"""
import argparse
from pathlib import Path
import json
import numpy as np
import cv2
def draw_polylines(polylines, shape, line_width=3):
h, w = shape
img = np.zeros((h, w), dtype='uint8')
for pl in polylines:
if len(pl) < 2:
continue
pts = [(int(x), int(y)) for x,y in pl]
for i in range(len(pts)-1):
p0 = pts[i]
p1 = pts[i+1]
cv2.line(img, p0, p1, color=255, thickness=line_width)
return (img > 127).astype('uint8')
def main():
p = argparse.ArgumentParser()
p.add_argument('polyjson')
p.add_argument('outpng')
p.add_argument('--line-width', type=int, default=3)
args = p.parse_args()
data = json.load(open(args.polyjson,'r'))
polylines = data.get('polylines', [])
shape = tuple(data.get('shape', [512,512]))
img = draw_polylines(polylines, shape, line_width=args.line_width)
cv2.imwrite(args.outpng, img*255)
print('Wrote', args.outpng)
if __name__ == '__main__':
main()