python带界面的人脸识别_基于Python的人脸识别实现带墨镜效果
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。
DEAL WITH IT是这样一个效果,眼镜从屏幕外飞进来,带在用户的脸上。这种效果的最佳实例是以一种独特的方式完成的。
今天,我们将编写一个生成器,该生成器使用任何有面部的静态图像作为输入。如果你想构建一个该效果的API,或者想以视频为输入来制作该效果,那么本文的代码是一个很好的开端。
我从Erik Taheri那里获得本文的灵感,而他写的是适用于浏览器的这个效果的Javscript版本。
在本文的结尾处,我还加入了一个使用OpenCV从摄像头实时获得效果的版本。
人脸识别和创建Gif的工具
我们将使用Dlib的get_frontal_face_detector,和Snapchat的镜头效果一文中用到的68点形状预测模型。
程序将接受命令行参数来获取输入图像。然后,使用Dlib中的人脸识别算法来查看输入的图像中是否有人脸。如果有的话,将为每个人脸创建一个最终位置,该位置是眼镜应该落到的位置。
然后,我们调整和旋转眼镜来适应每个人的脸。我们将使用从Dlib的68点模型返回的点集来找到眼睛的质心,以及它们之间的空间旋转角度。
我们找到眼镜的最终位置和旋转角度后,可以制作眼镜从屏幕顶端进入的gif。我们将使用MoviePy的make_frame函数绘制gif。
自动生成Gif的架构
该应用程序的结构非常简单。我们首先获取图像,然后将其转换为灰度NumPy数组。得到NumPy数组后,我们可以将要检测的图像传递给面部定位预测模型。
返回人脸方向后,我们可以选出眼睛,以及缩放和旋转眼镜架以适应人脸。
我们可以积累一组面孔和它们的最终位置,并将它们添加到列表中。
最后,通过这个列表,我们可以用MoviePy创建一个绘制路线,然后生成动态gif。
编码
规划好代码结构后,我们下一步需要逐步构建代码。
首先导入所有的工具,并且从命令行得到一张图像:
有了这个,我们可以调整图像以适应更小的宽度,因此我们的gif不会很大,而且要导入面部识别和形状预测。
我们也可以打开要贴在图像上的眼镜和文本。
此时,我们还应该检测图像中是否有任何人脸。如果没有,我们应该立即退出。
好极了!现在,我们可以遍历每个检测到的人脸,并建立一个缩放和旋转眼镜列表,列表也包括眼镜的最终位置。
有了最终位置以及缩放和旋转的眼镜,我们可以把影片放在一起。我们会为整个gif设置一个持续时间,以及阻止眼镜掉下来的时间,以便我们可以把“deal with it”文本显示在屏幕上。
你会注意到,我使用了一个文本叠加的图像,而不是Pillow内置的文本绘制功能。我这样做是因为Pillow没有内置文本的勾画功能。不勾画,文字在更加明亮的图像上难以辨认。
最后,我需要在MoviePy中创建一个VideoClip对象,并传入动态生成的帧和FPS。
有了这个,我们完成了!
实时动态表情包
现在,我们已经有了一套生成gif的基础代码,改写代码实时地与摄像头协同工作并不困难。
我们可以使用OpenCV作为源图像,并用计数器追踪动画,而不是从命令行加载源图像。这样做的新代码非常简单,核心代码:
这创建了一个计数器,并且通过运行了多少帧来追踪时间。使用这个,我们可以让眼镜到最终位置。用户如果按下d键,我们开始动画。
你可以在Github上阅读其余的代码。(https://github.com/burningion/automatic-memes)
下一步
我们已经成功地构建了程序的第一部分,它可以作为一个API来自动生成效果。
把我们程序连接到Django之类的东西,我们可以显示一个网页,允许用户上传他们自己的图像,并得到完整的效果。
像youtube-dl这样的东西,我们可以让用户粘贴YouTube的网址视频来自动生成效果。
很酷吧,要不要自己试一试?
英文原文:https://dev.to/burningion/deal-with-it-in-python-with-face-detection-chi
译者:张新英
python带界面的人脸识别_基于Python的人脸识别实现带墨镜效果相关推荐
- python人脸口罩识别_基于Python+OpenCV的人脸口罩识别检测
以下编程在Jupyter notbook平台上进行 一.OpenCV下载安装 二.人脸口罩数据集下载处理 (一)人脸口罩数据集下载 下载人脸口罩数据集的目的是利用OpenCV进行模型训练,这里采用口罩 ...
- python人脸深度识别_基于Python的深度学习人脸识别方法
基于 Python 的深度学习人脸识别方法 薛同来 ; 赵冬晖 ; 张华方 ; 郭玉 ; 刘旭春 [期刊名称] <工业控制计算机> [年 ( 卷 ), 期] 2019(032)002 [摘 ...
- svm 用来人脸识别_基于SVM的人脸识别
基于 SVM 的人脸识别 摘要 :主成分分析( PCA )是人脸识别中特征提取的主要方法,支持向量机 ( SVM )具有适合处理小样本.非线性和高维数问题,利用核函数且泛化能力强 等多方面的优点.文章 ...
- python名片识别_基于Python的名片识别接口调用代码实例
基于Python的名片识别接口调用代码实例 代码描述:基于Python的名片识别接口调用代码实例 #!/usr/bin/python # -*- coding: utf-8 -*- import js ...
- python怎样使用各个日期赤纬_基于Python的天文软件命令行界面设计与实现
计算机软件技术的不断发展,推动了人机交互技术的长足进步.从传统的命令行(Command Line Interface,CLI),到图形用户界面(Graphical User Interface,GUI ...
- python的图书管理项目教程_基于python图书馆管理系统设计实例详解
写完这个项目后,导师说这个你完全可以当作毕业项目使用了,写的很全,很多的都设计考虑周全,但我的脚步绝不止于现在,我想要的是星辰大海!与君共勉! 这个项目不是我的作业, 只是无意中被拉进来了,然后就承担 ...
- python制作浏览器 脚本之家_基于Python打造账号共享浏览器功能
本篇文章介绍的内容会涉及到以下知识: PyQt5的使用; Selenium的使用; 代理服务器的架设和使用: 一.账号限制之痛 在如今的互联网中,免费的信息和资源占据了很大一部分,各类互联网应用提供了 ...
- python中numpy数组的合并_基于Python中numpy数组的合并实例讲解
基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...
- python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx
湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...
- python发送文件给微信好友_基于Python实现定时自动给微信好友发送天气预报
效果图 from wxpyimport * import requests from datetimeimport datetime import time from apscheduler.sche ...
最新文章
- 设计模式之建造者模式(生成器模式、Builder)摘录
- getElementByName????????,????????,
- tcp三次握手和syn 洪水攻击
- select count(*) from返回的类型_数据分析面试题类型汇总
- Linux 目录栈及目录切换
- JDK9.0.4安装配置
- Unity中Json文件编写注意
- 【排错】exchange2013不能显示所有OU
- PHP开发中的中文编码问题
- @Resource真的只是按名称来进行依赖注入吗?@Autowired真的只是按照类型来依赖注入吗?
- 炫酷好玩好用的卫星全景地图
- AWS扩容硬盘(转)
- 带登录页面的猜数字小游戏
- 安卓接入微信php处理,PHP对接微信公众号实现简单自动回复
- android删除手机照片恢复软件,安卓手机上照片删除如何恢复?
- JavaFX8开发过程中的问题记录
- java计算机毕业设计高原特色农产品网站设计源码+mysql数据库+系统+lw文档+部署
- 顺丰打印电子运单报500问题解决
- 移动端input、textarea、div(contenteditable )输入框正则过滤(兼容ios)
- 数字游戏 【规律 + 思维】