Skip to content

Instantly share code, notes, and snippets.

@ProGamerGov
Last active July 2, 2018 19:05
Show Gist options
  • Save ProGamerGov/e7c7d94d65d347515605a7dc86aed37c to your computer and use it in GitHub Desktop.
Save ProGamerGov/e7c7d94d65d347515605a7dc86aed37c to your computer and use it in GitHub Desktop.
A Python version of Neural-Style's color-independent style transfer function, using only PIL/Pillow.
from PIL import Image
import argparse
parser = argparse.ArgumentParser()
# Basic options
parser.add_argument("-content", help="Original content target image", default='examples/inputs/tubingen.jpg')
parser.add_argument("-generated", help="Stylized image", default='examples/outputs/tubingen_starry.png')
parser.add_argument("-output_image", default='out.png')
params = parser.parse_args()
Image.MAX_IMAGE_PIXELS = 1000000000 # Support gigapixel images
def main():
content = Image.open(params.content).convert('RGB')
generated = Image.open(params.generated).convert('RGB')
output = original_colors(content, generated)
output.save(str(params.output_image))
# Combine the Y channel of the generated image and the UV/CbCr channels of the
# content image to perform color-independent style transfer.
def original_colors(content, generated):
content_channels = list(content.convert('YCbCr').split())
generated_channels = list(generated.convert('YCbCr').split())
content_channels[0] = generated_channels[0]
return Image.merge('YCbCr', content_channels).convert('RGB')
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment