原创 菜鸟哥 菜鸟学Python 2020-07-22

收录于话题

#趣味Python

107个

再见李佳奇,菜鸟哥用Python也能帮小姐姐选择口红啦!_Python

对于李佳琦,想必知道他的女生要远远多于男生,李佳琦最早由于直播向广大的网友们推荐口红,逐渐走红网络,被大家称作“口红一哥”。不可否认的是,李佳琦的直播能力确实很强,他能够抓住绝大多数人的心理,让大家喜欢看他的直播,看他直播推荐的口红适不适合自己,色号适合什么样子的妆容。

为了提升效率,让自己的家人或者女友能够快速的挑选出合适自己妆容的口红色号,今天,小编带领大家利用Python来实现,如何快速挑选合适的口红色号。




 1 

程序设计思路


这个程序的思路主要是利用人脸关键部位识别,然后识别出嘴唇的部位,然后进行图片替换。

再见李佳奇,菜鸟哥用Python也能帮小姐姐选择口红啦!_Python_02



第一步:首先利用tkinter来选择自己的照片,并选择口红的色号,我们获得了选择照片的存储路径和选择的口红色号之后,程序将我们选择的色号由16进制转化为RGB形式;
第二步:利用face_recognition来读取选择的图片,face_recognition是最简单的人脸识别的库,它可以检测人脸的关键点,包括眼睛、鼻子、上下嘴唇的位置等等信息。我们利用face_recognition识别图片中上下嘴唇的位置;
第三步:利用PIL库,将嘴唇的位置涂抹上我们选择的口红色号,然后将处理完的图片显示在界面上,就完成了我们整个程序的执行流程。



 2 

动手撸代码


先来看一下设计的程序的界面,我用的是tk设计的,如果想用前端做的话也是可以的,换个壳子而已。首先,我们来看一下运行后的程序界面:


我们运行主程序,会弹出上面的界面,第一步是选择口红的色号,小伙伴们,可能会问,我不清楚口红的色号怎么办,别着急,小编给大家早就准备好了,小编为大家精心准备了迪奥、美宝莲、香奈儿、纪梵希等大牌厂家的不同系列的口红色号表格,如下图所示,大家只需要自己尽情选择就好。


我们选择完口红的色号之后,就是点击“打开图片”选择我们本地的照片,并显示在“图片1”的显示框内。
接着就是最重要的“选择口红”按钮,它会帮助我们识别图片中嘴唇的位置,然后涂抹上对应色号的照片,并将处理好的照片显示在“口红效果”的展示框中。



 3 

关键源码解析


我们来看一下这一部分对应的源码吧


上述的程序中,主要完成了3个动作:

  • 分别对应了GUI界面中“打开图片”、“选择口红”和“退出软件”三个按钮的对应函数;
  • 其中choosePic函数用来上传并显示我们的本地图片;
  • 而showlioStickPic用来给我们的图片涂口红,并在界面上显示处理之后的照片;
  • quit就是处理tk界面的退出按钮


PutLipsticks函数完成了最为关键的操作,下面我们会一步讲解是如何处理的


上述的程序中,首先程序需要将我们输入的16进制的色号转变为RGB的三通道格式,因为后续的函数中,不支持16进制的颜色表示方式。然后我们调用face_recognition来检测人脸的关键点,将我们的上下嘴唇涂上我们选择的口红颜色,并保存处理好的图片,返回保存的文件路径。

以上就是我们的程序讲解,我们来看一下程序的执行效果到底如何吧,如下图所示:

再见李佳奇,菜鸟哥用Python也能帮小姐姐选择口红啦!_Python

可以看到,我们利用不同的色号,为同一张图片进行了口红的试色,当然,大家可以按照自己的喜好,去更换口红的颜色。



 4 

视频展示


说了这么多,小编录了一个视频,动态的展示程序的效果,大家一起来看一下。



Python就是这么有趣,语法简单功能强大,凭借其巨大社区文化和成千上万的轮子库,把触角延伸到了各行各业里面,加上人工智能,5G时代的到来,应用的场景会越来越多,学习Python没错!
需要源码学习,可以在下方获取。源码只是参考,需要自己安装一些库和环境适配才能运行。