opencv+face_recognition+tkinter: 实现简单的视频人脸识别工具(完整代码)

实现效果:写一个图形界面,实现输入一个视频,对视频中的人脸进行捕捉并输出。
在这里插入图片描述

技术基础

本文技术基础将分为三个部分介绍:

用途
opencv 视频处理模块
face_recognition 人脸识别模块
tkinter 窗口视窗设计模块

1.face_recognition

face_recognition是一个强大、简单、易上手的人脸识别开源项目,输入一张图像就可以确定人脸的位置。关于face_recognition的更多内容可以了解https://github.com/ageitgey/face_recognition

下载

以下是我亲自尝试过的face_recognition库下载方法,都成功安装了:

  • win10:最开始直接import face_recognition报错,发现Building wheel for dlib报错,也就是dlib的问题。然后pip install dlib仍然报错。发现和我的3.6版本有冲突。于是找到Windows系统安装dlib可直接在网站https://pypi.org/simple/dlib/ 下载3.6版本对应的whl文件,用pip安装。就是下载这个xxx.whl到一个目录,然后cd/d 该目录,pip install xxx.whl安装成功。再次pip install face_recognition即可。
  • linux: 首先安装cmake
sudo wget  https://cmake.org/files/v3.9/cmake-3.9.0-rc5.tar.gz -O cmake.tar.gz
sudo tar -xvf cmake.tar.gz
cd cmake-3.9.0-rc5/
sudo chmod +x bootstrap
sudo ./bootstrap
sudo make
sudo make install

安装好cmake后,输入

cmake -version

查看cmake版本是否安装成功。然后安装git来手动安装dlib

 git clone https://github.com/davisking/dlib.git
 cd dlib
mkdir build
cd build
cmake ..

最后安装face_recognition。

2.Opencv

Python的cv2库是一个在计算机视觉领域应用非常广泛的库,Python对于视频的读取、处理很多使用cv2库实现。

了解、安装cv2库可以参考Py之cv2:cv2库(OpenCV,opencv-python)的简介、安装、使用方法(常见函数、方法等)最强详细攻略。在处理图像方面,cv2和其他几种常见的库例如PIL的用法很不一样,可以查看我的另一篇文章可以上Python PIL、cv2、Dataloader、plt读取/显示图像数据集对比实例

v2使用有一些坑,例如三个通道的顺序是BGR而不是RGB,有时会报奇怪的错误其实就是图像路径没写对,等等。

3.tkinter

我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。

Tkinter 就是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。

作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,不需要另外下载。
参考:Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)

实现

以下给出本文的主要代码,完整代码见我的Github: GUI for video_face_recognition

视频处理部分

这一部分主要使用cv2库实现。
读取视频:

self.cap = cv2.VideoCapture(self.filename)  

读取fps每秒传输帧数、视频时长(帧总数)

self.fps = self.cap.get(cv2.CAP_PROP_FPS)
self.total = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT))

设定从视频的第几帧开始读取

self.cap.set(cv2.CAP_PROP_POS_FRAMES, self.start)

如果视频是竖着拍的,在cv2读取进去以后仍然是横向的,所以在人脸识别之前,需要旋转一下。(当然喵酱这些视频都是横着拍的就不用旋转了)
旋转图像代码:

##旋转图像
def rotate_bound(image,angle):
    #获取图像的尺寸
    
  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值