Last active
July 2, 2018 19:05
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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