From 5ae501074abcfdcaeaaf6cd75769640bfffd46cb Mon Sep 17 00:00:00 2001 From: BKHMSI Date: Sun, 9 Apr 2017 01:43:24 +0200 Subject: [PATCH] added keras code --- .../__pycache__/filters.cpython-36.pyc | Bin 0 -> 1900 bytes PencilSketch/dancing.jpg | Bin 0 -> 13343 bytes PencilSketch/filters.py | 54 +++++ PencilSketch/sketch.jpg | Bin 0 -> 32285 bytes PencilSketch/sketch.py | 19 ++ Project_1.ipynb | 218 ++++++++++++++++++ README.md | 1 + 7 files changed, 292 insertions(+) create mode 100755 PencilSketch/__pycache__/filters.cpython-36.pyc create mode 100755 PencilSketch/dancing.jpg create mode 100755 PencilSketch/filters.py create mode 100755 PencilSketch/sketch.jpg create mode 100755 PencilSketch/sketch.py create mode 100755 Project_1.ipynb create mode 100644 README.md diff --git a/PencilSketch/__pycache__/filters.cpython-36.pyc b/PencilSketch/__pycache__/filters.cpython-36.pyc new file mode 100755 index 0000000000000000000000000000000000000000..547da77fb58184d86fb01e55faf7517bcdb68af1 GIT binary patch literal 1900 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%0D!Z?6Z;e5^u!T<_Y}@4zhzx4 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

f_t$SXrvFB*D7 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 U_&s(+WJuVCJSHX}>1E;n04SpyqyPW_ literal 0 HcmV?d00001 diff --git a/PencilSketch/filters.py b/PencilSketch/filters.py new file mode 100755 index 0000000..76c6ba5 --- /dev/null +++ b/PencilSketch/filters.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" A module containing a number of interesting image filter effects, + such as: + * Black-and-white pencil sketch + * Warming/cooling filters + * Cartoonizer +""" + +import numpy as np +import cv2 + +from scipy.interpolate import UnivariateSpline + +__author__ = "Michael Beyeler" +__license__ = "GNU GPL 3.0 or later" + + +class PencilSketch: + """Pencil sketch effect + A class that applies a pencil sketch effect to an image. + The processed image is overlayed over a background image for visual + effect. + """ + + def __init__(self, width, height, bg_gray='pencilsketch_bg.jpg'): + """Initialize parameters + :param (width, height): Image size. + :param bg_gray: Optional background image to improve the illusion + that the pencil sketch was drawn on a canvas. + """ + self.width = width + self.height = height + + # try to open background canvas (if it exists) + self.canvas = cv2.imread(bg_gray, cv2.CV_8UC1) + if self.canvas is not None: + self.canvas = cv2.resize(self.canvas, (self.width, self.height)) + + def render(self, img_rgb): + """Applies pencil sketch effect to an RGB image + :param img_rgb: RGB image to be processed + :returns: Processed RGB image + """ + img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY) + img_blur = cv2.GaussianBlur(img_gray, (21, 21), 0, 0) + img_blend = cv2.divide(img_gray, img_blur, scale=256) + + # if available, blend with background canvas + if self.canvas is not None: + img_blend = cv2.multiply(img_blend, self.canvas, scale=1./256) + + return cv2.cvtColor(img_blend, cv2.COLOR_GRAY2RGB) \ No newline at end of file diff --git a/PencilSketch/sketch.jpg b/PencilSketch/sketch.jpg new file mode 100755 index 0000000000000000000000000000000000000000..ac111c297486ec5d5a5317cdca9236967be6b52a GIT binary patch literal 32285 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