# pip install pillow scikit-image # or # sudo apt install python3-pil python3-skimage from PIL import Image from skimage.measure import find_contours from matplotlib import pyplot import numpy from masque import Pattern, Polygon from masque.file.gdsii import writefile # # Read the image into a numpy array # im = Image.open('./Desktop/Camera/IMG_20220626_091101.jpg') aa = numpy.array(im.convert(mode='L').getdata()).reshape(im.height, im.width) threshold = (aa.max() - aa.min()) / 2 # # Find edge contours and plot them # contours = find_contours(aa, threshold) pyplot.imshow(aa) for contour in contours: pyplot.plot(contour[:, 1], contour[:, 0], linewidth=2) pyplot.show(block=False) # # Create the layout from the contours # pat = Pattern() pat.shapes[(0, 0)].extend([ Polygon(vertices=vv) for vv in contours if len(vv) < 1_000 ]) lib = {} lib['my_mask_name'] = pat writefile(lib, 'test_contours.gds', meters_per_unit=1e-9)