# /// script # requires-python = "==3.10" # dependencies = [ # "kernels", # "numpy", # "pillow", # "torch", # ] # /// import torch from PIL import Image import numpy as np from kernels import get_kernel # This downloads, caches, and loads the kernel library # and makes the custom op available in torch.ops img2gray_lib = get_kernel("drbh/img2gray") img = Image.open("kernel-builder-logo-color.png").convert("RGB") img = np.array(img) img_tensor = torch.from_numpy(img).cuda() print(img_tensor.shape) # HWC gray_tensor = img2gray_lib.img2gray(img_tensor).squeeze() print(gray_tensor.shape) # HW # save the output image gray_img = Image.fromarray(gray_tensor.cpu().numpy().astype(np.uint8)) gray_img.save("kernel-builder-logo-gray2.png")