人工智能实现程序员“防”BOSS?刷脸就发短信,8行代码人脸报警
如今一个攻城狮就能搞定人脸的深度进修算法,这要多感激打动国外开源框架,虽然达不到旷世face++和诸多人脸公司的深度,可是实际应用已经没有太大压力。下图就是tensorflow写的人脸5点定位加情感测试。
前不久搜集上爆红某公司,一人脸识别开发师用摄像头识别老板,当老板靠进本身的工位的时辰,电脑主动切换到本身工作时的界面。
WTF?
你还在觉得这个梗是网上辟谣的?
还在觉得人脸识别手艺实现特别复杂、高峻上?
NO!你OUT了,今天小编用最最简单易懂的代码讲解,给大师带来这款防火、防盗、防老板的终极利器——
项目地点:BossComming
项目方针:
识别特定人物,并经由过程手机信息的编制提示你:你的老板来啦!
项目情形引见:
Python 3.3+或Python 2.7(本教程用6版本)
Windows 7或MacOS,以及Linux等体系
一个摄像头和IDLE集成体系(PyCharm)
下载完Python3.6,并设置装备安排相干的体系情形,按win键+R键输入cmd,
翻开呼吁提示符,输入呼吁安装一下依靠:
pip3 install face_recognition
pip3install jpush
代码讲解:
下载本教程的项目,我们起头逐条代码的讲解人脸识别代码,保证在列位吃瓜群众“深切”到人工智能规模的教程傍边。video_capture = cv2.VideoCapture(0)
# Load a sample picture and learn how to recognize it.
obama_image = face_recognition.load_image_file("BOSS2.bmp")
obama_face_encoding = face_recognition.face_encodings(obama_image)[0]
whileTrue:
ret, frame = video_capture.read()
face_locations = face_recognition.face_locations(frame)
face_encodings = face_recognition.face_encodings(frame, face_locations)
其中cv2.VideoCapture函数界说摄像头工具,0为第一个摄像头,一样平常为笔记本内置摄像头。
face_recognition.load_image_file:读取项目下的图片文件
face_recognition.face_encodings:对图片停止编码
while True:进入死轮回
video_capture.read:是一个前往当前帧的函数,它能前往两个参数,ret和frame
第一个参数是bool型的ret,其值为True或False,代表有没有读到图片
第二个参数是frame,是当前截取一帧的图片。
face_recognition.face_locations(frame):获取视频流帧,识别人脸
face_recognition.face_encodings(frame, face_locations):对视频流停止编码
本章根基讲解了bosscoming这个成心思项目的团体框架和实现。更多细节请关注我们,将在后面文章出现。
下面分享分享Python正则表达式的知识:
(1). 正则表达式语法
1.1 字符与字符类
1 特殊字符:\.^$?+*{}[]()|
以上特殊字符要想使用字面值,必须使用\进行转义
2 字符类
1. 包含在[]中的一个或者多个字符被称为字符类,字符类在匹配时如果没有指定量词则只会匹配其中的一个。
2. 字符类内可以指定范围,比如[a-zA-Z0-9]表示a到z,A到Z,0到9之间的任何一个字符
3. 左方括号后跟随一个^,表示否定一个字符类,比如[^0-9]表示可以匹配一个任意非数字的字符。
4. 字符类内部,除了\之外,其他特殊字符不再具备特殊意义,都表示字面值。^放在第一个位置表示否定,放在其他位置表示^本身,-放在中间表示范围,放在字符类中的第一个字符,则表示-本身。
5. 字符类内部可以使用速记法,比如\d \s \w
3 速记法
. 可以匹配除换行符之外的任何字符,如果有re.DOTALL标志,则匹配任意字符包括换行
\d匹配一个Unicode数字,如果带re.ASCII,则匹配0-9
\D 匹配Unicode非数字
\s匹配Unicode空白,如果带有re.ASCII,则匹配\t\n\r\f\v中的一个
\S 匹配Unicode非空白
\w匹配Unicode单词字符,如果带有re.ascii,则匹配[a-zA-Z0-9_]中的一个
\W 匹配Unicode非单子字符
(2) 组与捕获
1 ()的作用:
1. 捕获()中正则表达式的内容以备进一步利用处理,可以通过在左括号后面跟随?:来关闭这个括号的捕获功能
2. 将正则表达式的一部分内容进行组合,以便使用量词或者|
2 反响引用前面()内捕获的内容:
1. 通过组号反向引用
每一个没有使用?:的小括号都会分配一个组好,从1开始,从左到右递增,可以通过\i引用前面()内表达式捕获的内容
2. 通过组名反向引用前面小括号内捕获的内容
可以通过在左括号后面跟随?P<name>,尖括号中放入组名来为一个组起一个别名,后面通过(?P=name)来引用 前面捕获的内容。如(? P<word>\w+)\s+(?P=word)来匹配重复的单词。
3 注意点:
反向引用不能放在字符类[]中使用。
2. Python正则表达式模块
2.1 正则表达式处理字符串主要有四大功能
1. 匹配 查看一个字符串是否符合正则表达式的语法,一般返回true或者false
2. 获取正则表达式来提取字符串中符合要求的文本
3. 替换查找字符串中符合正则表达式的文本,并用相应的字符串替换
4. 分割使用正则表达式对字符串进行分割。
2.2 Python中re模块使用正则表达式的两种方法
1. 使用re.compile(r, f)方法生成正则表达式对象,然后调用正则表达式对象的相应方法。这种做法的好处是生成正则对象之后可以多次使用。
2. re模块中对正则表达式对象的每个对象方法都有一个对应的模块方法,唯一不同的是传入的第一个参数是正则表达式字符串。此种方法适合于只使用一次的正则表达式。
好了,今天的知识就分享到这里,欢迎关注爱编程的南风,私信关键词:学习资料,获取更多学习资源,如果文章对你有有帮助,请收藏关注,在今后与你分享更多学习python的文章。同时欢迎在下面评论区留言如何学习python。