前言:
此时姐妹们对“python如何安装cv2库”大概比较珍视,朋友们都想要了解一些“python如何安装cv2库”的相关知识。那么小编在网上搜集了一些对于“python如何安装cv2库””的相关资讯,希望你们能喜欢,姐妹们一起来学习一下吧!基于python+face_recognition+opencv+pyqt5+百度AI实现的人脸识别、语音播报、语音合成、模拟签到系统
使用python3+写的,使用face_recognition(python开源的人脸识别库)进行人脸识别 ,使用opencv2进行打开显示摄像头图片等,使用pyqt5是ui界面,使用百度AI中的百度语音合成实现语音播报和语音合成,使用对excel的操作以及人脸识别实现模拟签到。
只需要把一张具有人脸信息的图片按名字命名放到相应的文件夹中,在text.txt文本中输入详细信息,即可使用。
人脸识别效果图
简单介绍
使用python3+写的,使用face_recognition(python开源的人脸识别库)进行人脸识别 ,使用opencv2进行打开显示摄像头图片等,使用pyqt5是ui界面,使用百度AI中的百度语音合成实现语音播报和语音合成,使用对excel的操作以及人脸识别实现模拟签到。
只需要把一张具有人脸信息的图片按名字命名放到相应的文件夹中,在text.txt文本中输入详细信息,即可使用。
github上有演示视频,详细演示了所能实现的功能
学习python不久,很多知识都是网上找的,做的也比较匆忙,所以配置什么的直接使用我当时参考的链接。
需要的配置
windows下
1.首先安装python3+
然后装pycharm (推荐) 设置 字体 风格
2.安装opencv
确保电脑有pip(python3会预装) pip install opencv-python 会自己安装cv2和numpy模块 可以使用cmd中 python-import cv2 再次import numpy 没提示错误就说明装好了
3.安装face_recognition
使用pip install下载不了需要安装dlib
使用这个链接 按照步骤操作
首先要装vs2015 然后装boost、 cmake 、 dlib、最后再装face_recognition
比较费时间 电脑上有下载好的D:\张文豪\资源\软件 vs2015 E:\人脸识别\文件\安装face_recognition 这里面是需要用到的boost cmake dlib
python3.6以上安装face_recogntion就会很简单
4.安装pyqt5
对pyqt5和pycharm进行连接
安装Anaconda我装 的是3-4.40 版本 里面有很多关于python的库 其中就包括pyqt5 和qtdesigner
然后需要将他们配置到pycharm中 便于使用
5.使用百度语音合成模块
申请百度账号进入百度ai创建应用 获取appid api key 等 语音合成代码里面要用到
百度ai
6.pip install XXX
有些库需要用到 可能anaconda上面并没有 需要自己使用pip isntall进行安装 这是主函数里面用到的一些库
以下几个库需要试一下电脑上是否有 可以使用 win+r--cmd--python--import XXX 如果没有提示错误就说明已经安装了XXX
baidu-aip 百度AI的模块 语音合成需要用
xlrd,xlwt,xlutils (三个是分开的)操作excel 读 写 结合读写
threading 使用多线程
time 时间库
datatime 关于时间的库
后三个不一定需要安装 安装之前试一试
功能介绍
文件
ft2.py (对汉字实现转码opencv的puttxt不支持汉字需要转码)
baiduyuyin.py这个是语音合成模块使用的是百度ai的语音合成其中的API-KEY等信息需要去百度注册获得
voice_syn_ui.py是语音合成的一个界面,只是一个小框
face_re_ui.py 是主界面 里面包括一些按钮和lable 进度条等主界面信息
openui.py 是主程序 几乎所有这个项目能实现的功能都在这里
photo文件夹用来放需要照片(需注意照片清晰度太低会识别不出人脸会报错)
video_screenshot是用来放拍照的照片
Amg.jpg是头像face3.jpg是背景
mysh.ttf是一个字体文件ft2.py 需要用到
text.txt是用来放个人的详细信息*(需要注意这里个人信息的格式按照原格式放,不然会读不出来)
data.xls是用来记录被摄像头识别出的人(有时间 事件可以按需求修改)
1主界面
使用pyqt5构建,9个按钮 一个进度条 还有隐藏的7个lable显示信息 里面多次使用布局 为更加美观多次很多的矩形都使用黄金比例构建
实现添加背景 添加头像 改变按钮颜色等功能
详细代码看face_re_ui.py
2打开摄像头
由于这个项目是基于实验室需要所做,所以在打开摄像头按钮处有三个,我所使用的摄像头是海康威视的,与我电脑在同一局域网使用的是rtsp地址进行访问,对于摄像头也需要一些配置,为处理更快需要降低帧率分辨率 等。如果是在笔记本上使用把self.source改成0, 同时下面使用到source的人脸识别 语音播报 录入信息到excel模块也需要把对source的判断删掉 到主界面把按钮改一下就好 (修改中如有问题可以联系)打开摄像头会有两到三秒的延迟(不同电脑可能会不同)
使用video_source(self,num) 该函数用于连接按钮并根据按钮提供source即摄像头的rtsp地址 里面进行判断之后
传入下一个函数btn_open_cam_click(self,num) 这个函数用来判断摄像头的状态,这个函数里面还有一些对摄像头是否打开的判断来修改按钮,如果没被打开就执行下一个函数show_camera(self) 这个是打开摄像头显示画面的函数,里面也包含了进行人脸识别的函数
其中由于这个是在ui上的lable显示摄像头画面,opencv 读取图片的样式,不能通过Qlabel进行显示,需要转换为Qimage QImage(uchar * data, int width,在代码140行左右。
3拍照
拍照时打开摄像头以及进行人脸识别时都可以进行的,会弹出一个确定的提示框,由于学python不是太好多线程还没学好,这里并不是多线程,点击拍照的时候视频会停。(有时间去好好学学多线程再进行修改)照片会以时间命名,放到video_screenshot文件夹中。
代码在 photo_face(self) 函数中,前提是摄像头打开的状况下。把当前的一帧图像获取出来并以时间命名(获取时间转换成字符串)
4人脸识别
语音播报和记录人脸信息都是基于人脸识别进行的,首先有个进度条progressbarr_move(self);timerEvent(self, e)两个函数,其次使用的是python的一个库face_recognition 进行识别,使用opencv打开,人脸识别模块中,首先加载图像,图像在一个photo文件夹中,获取face_encoding脸部信息,如果图像没有人脸信息此时会报错,然后会进入处理视频画面的while循环 对每帧图像进行处理,当找到人脸的时候开始进行匹配,会把每帧图像找到的人记录下来,放到一个集合中去,调用这个函数show_picture(self)在人脸识别的右边显示 识别出来人的详细信息姓名年龄等,这些信息是提前录入的,再使用write_record(self):函数,进行对每次获取的人处理记录到一个excel中去,然后再进行对人脸进行标框显示汉字226行左右,这部分是核心功能,代码量比较大,涉及到的东西用到的知识也是比较多,也有部分原因是我python学的不是很精,一些代码处理的不够短小。
进度条是一个假的进度条并不是能够显示真正的进度,而是对时间的处理对值的一些限定判断从而实现类似进度条的效果。
获取文件夹中人脸信息部分,使用对字符串的处理能够实现,自己提取出名字放入集合,使用循环遍历文件夹中的照片人脸信息。
show_picture(self)函数中从text.txt文件中提取出来每个人的信息,进行和从图像中找到的人脸进行匹配,匹配成功的会在右侧lable显示那个人的照片和详细信息,显示信息和显示图片的lable是独立的但是在调用的时候是一块调用显示,结束之后有一个qingping()函数进行清屏,但是此处有个bug,当存在多个人脸时显示详细信息关闭人脸识别会存在一张或两张照片还没能解决。
write_record(self):函数能够把摄像头看到的人脸都记录到表格中去,从而能够达到模拟签到,由于每帧获取到的人脸可能会不同,所以需要对集合 元祖的处理达到记录的人脸不重复不遗漏。然后还有对excel的操作,打开读写的操作使用xlutils.copy库,具体对excel的写入看代码。
人脸标框汉字显示,人脸标框是使用opencv 实现,汉字显示名字是使用了ft2这个转码的文件实现,因为opencv的puttxt不支持汉字输入,然后再进行opencv呈现到lable 的一些转换.
5语音合成 语音播报
语音合成代码在baiduyuyin.py 使用的是百度ai的语音合成模块。这个需要到百度AI上面注册创建一个活动,获取APP-ID等信息用于验证,这个地方电脑需要联网,用于验证信息的正确性。
Openui.py中语音合成是第二个ui界面,一个输入框两个按钮,输入信息到输入框点击合成,会获取到输入的信息并调用语音合成模块生成音频打开音频,点击关闭,会关闭页面同时结束播放音频的软件。(播放音频我这里使用的是系统打开音频,推荐软件potplayer)
语音播报是一个单独的按钮,会把出现过摄像头的人的姓名都以语音合成的形式播放出来,使用到的集合跟录入到excel中的集合类似。
6录入信息
这里点击录入信息按钮,会打开文件打开框,直接打开的是照片的文件夹,返回上一级找到text.txt是放详细信息的文本。该项目录入信息只要放入该人的照片到photo文件夹中以人名命名图片后缀为jpg,详细信息放到text.txt文本,并按原格式放入(当时学的python还没学到文件处理那块,所以用的是一种很麻烦的方法放信息)
7查看记录
在人脸识别模块中记录下来的识别出的人的信息放集合中,write_record(self)函数中有详细的代码,对集合的处理保证获取到的信息不会重复,不会遗漏。里面有对excel的操作实现写入数据,实际使用的不是直接在原文件上面写而是把原文件的信息复制下来新建一个文件名一样的文件复制到里面,再向这个新文件里面写入数据。
目前存在的漏洞:记录信息那块不是很完善,逻辑错误会尽快改掉;显示详细信息那块lable上的照片删不掉目前还没找到解决办法,应该尝试换种清理lable的方法;代码里面如果操作失误没有相关的提示信息(因为这个很多地方都需要完善需要去考虑)
写这个代码的时候python学的还不是很好,使用到的一些语句以及方法都不是很好,需要去完善,还会更新,下一步可能会使用face++的人脸识别模块,face_recognition不是很稳定
下载地址:
标签: #python如何安装cv2库 #vs2015python #pycharm怎么pip install opencv