用Python实现Instagram滤镜变成百变女神

2020-07-14 10:44 菜鸟学Python

对于Instagram滤镜,想必有过Instagram使用经历的小伙伴应该十分清楚,而没有用过的也听说过Instagram吧。Instagram滤镜实际上就是利用各种算法对图片从色彩、对比度、亮度等方面进行调节,来实现图像的各种特殊效果。如下图所示:


上面的图片中,左上角就是我们拍出来的原图,而其余三张图片就是我们利用不同的滤镜制作出来的效果,可以看到,不同滤镜下的小姐姐,展示出了不同的魅力,学会使用滤镜,绝对是必不可少的。



 1

设计思路


今天小编就带领大家实现一个flask和滤镜算法相结合的程序,首先,我们来看一下,程序的设计思路。


程序启动后,首先读取图片并选择采用的滤镜模式,这里有9种滤镜的模式,分别为Inkwell、Sepia、Gotham、Nashville、Poprocket、Negative、LOMOfi、Walden和Cartoonifier。为了更好的让大家对九种滤镜有更深的了解,小编特意做了一个图展示给大家。如下图所示:

上图中展示的是原图和除了Cartoonifier之外的其他8种滤镜效果,对于Cartoonifier滤镜效果,大家可以参考之前公众号推出的《熬了一夜!我用Python做了一个网站,帮小姐姐生成漫画头像》中的效果图。可以看到,不同的滤镜之下,小姐姐展现出来的风格也是不相同的,当然,每一种滤镜对应的最合适的效果也是不同的,需要大家自己去不断的搭配,去尝试。


上图中,最上面的图片是原图,而下面的两张图中,显示的是不同的滤镜,我们可以看到最下面的右边的图更能突出秋天的意境之美,而最下面的左图则完全不能展现出秋天的美。



 2 

程序介绍


接下来,我们来了解一下程序的构成吧,对于滤镜的算法,小编采用的是GitHub上的satchit24所实现的滤镜算法库,由于作者提供的展示和使用效果对用户不友好,因此小编采用flask对于程序进行了包装。为了更方便的大家了解滤镜的算法,小编拿Inkwell算法来为大家解释一下程序,如下图所示:

上图便是Inkwell程序的核心,首先程序将图片从0到255转变成0到1之间,然后按比例混合三个通道的数值,利用高斯滤波来去除噪声,最后再将数值限定在[0,1]的范围内即可。对于其他的滤镜算法,大家也可以自己进行分析。



 3 

结合Flask进行设计


下面我们结合flask进行讲解,首先,程序flask程序启动后,会让我们输入图片,并选择一个滤镜,如下图所示:

大家只需要按照上述的三步,选择滤镜种类,然后点击选择本地图片,然后点击上传按钮即可,接着程序便会执行下图的函数。

上述的程序中,首先会根据传入的图片和滤镜的类型,对图片进行处理,然后返回处理好的图片的保存地址,并传入到html文件中。然后html文件会读取图片的地址进行显示。



 4 

视频展示


以上就是小编对于程序部分的讲解,接下来小编将通过视频展示的形式,让大家更清晰的看出程序是如何运行的。



Python是不是很有趣啊,除了传统的爬虫,数据分析,自动化办公,运维这些应用场景之外,其实在图片,音频,视频方面的处理更有趣,尤其是结合的 AI之后,简直就是牛逼的无敌了,没办法谁叫Python轮子多呢。


需要源码的同学,直接扫码获取。


长按 上面的二维码2秒

后台输入:【滤镜


点这里,进菜鸟学PythonB站大本营
本文章转载自公众号:cainiao_xueyuan

首页 - Python 相关的更多文章: