Python 基于OpenCV+face_recognition实现人脸捕捉与人脸识别(照片对比)

1.安装包依赖

与上篇通过摄像头动态识别人脸一样,先下载好opencv-python、face-recognition,这里因为使用的是照片对比的方式,特意使用tkinter画了一个简单的GUI方便操作。

在python 3以上版本tkinter是环境自带的,所以这里不需要安装

2.代码示例

import os
import cv2
import numpy as np
import face_recognition
import tkinter as tk  
import tkinter.filedialog
from PIL import Image,ImageTk classNames=[]
img_path='Picture'
img_recognition_path='Recognition'
existsEncodeingList=[]
#对人脸集合进行编码进行处理
def findEncodeings(images):for img in images:#灰度处理img=cv2.cvtColor(src=img,code=cv2.COLOR_BGR2RGB)#face_encodings对图片对象a_images进行编码并返回数组0位置编码结果encode=face_recognition.face_encodings(img)[0]existsEncodeingList.append(encode)#获取当前存储的人脸编码集合
def findExistsEncodeingList(img_path):images=[]#列出已经上传的所有图片imgList=os.listdir(img_path)#处理存储的图片得到其人脸编码for pic in imgList:img=cv2.imread('{}/{}'.format(img_path,pic))images.append(img)classNames.append(os.path.splitext(pic)[0])findEncodeings(images)#选择并对比图片
def choosepic():choosepath = tkinter.filedialog.askopenfilename()path.set(choosepath)img_open = Image.open(entry.get()).resize((530,750))img = ImageTk.PhotoImage(img_open)lableShowImage.config(image=img)lableShowImage.image = imglableShowImage.place(x=30, y=70, width=530, height=750)faceRecognition(choosepath)def faceRecognition(choosepath):frame=cv2.imread(choosepath)frameRGB=cv2.cvtColor(src=frame,code=cv2.COLOR_BGR2RGB)#对摄像头读取的检测人脸facesLocate=face_recognition.face_locations(frameRGB)#进行特征编码faceEncoded=face_recognition.face_encodings(frameRGB,facesLocate)#遍历检测的人脸和库中读取的图片进行对比,计算其相似度name='unknow'for (top,right, bottom,left),face_encoding in zip(facesLocate,faceEncoded):#进行匹配matchs=face_recognition.compare_faces(existsEncodeingList,face_encoding)#计算相似度distance=face_recognition.face_distance(existsEncodeingList,face_encoding)lab='unknow'for index, item in enumerate(distance):if item<0.5:if matchs[index]:#得到匹配到的图片名称与相似度值lab='name:{}; Similarity:{}'.format(classNames[index],item)name=classNames[index]break#初始化面部捕捉框显示绿色color1 =(0,255,0)if name =='unknow':#未能识别的时候显示蓝色color1 =(255,0,0)#画面部捕捉框cv2.rectangle(img=frame,pt1=(left,top),pt2=(right,bottom),color=color1,thickness=3)#在捕捉框上添加匹配到的图片信息cv2.putText(frame, lab, (left,top-8),cv2.FONT_HERSHEY_SIMPLEX, 0.7, color1, 2)cv2.imwrite('{}/{}.png'.format(img_recognition_path,name),frame)img_Recognition = Image.open('{}/{}.png'.format(img_recognition_path,name)).resize((530,750))img = ImageTk.PhotoImage(img_Recognition)lableShowImage2.config(image=img)lableShowImage2.image = imglableShowImage2.place(x=630, y=70, width=530, height=750)if __name__ == '__main__':findExistsEncodeingList(img_path)#生成tk界面 app即主窗口app = tk.Tk()  #修改窗口titileapp.title("show pictue")  #设置主窗口的大小和位置app.geometry("1200x900+200+50")#Entry widget which allows displaying simple text.path = tk.StringVar()entry = tk.Entry(app, state='readonly', text=path,width = 100)entry.pack()#使用Label显示图片lableShowImage = tk.Label(app)lableShowImage.pack()#使用Label2显示处理后的图片lableShowImage2 = tk.Label(app)lableShowImage2.pack()#选择图片的按钮buttonSelImage = tk.Button(app, text='choose picture', command=choosepic)buttonSelImage.pack()app.mainloop()

3.说明

首先我将需要被识别的人脸的照片预设到项目目录的Picture文件夹下,然后创建一个Recognition目录存放识别过的图片,这样方便在一个界面上展示对比结果照片。

 其实对比结果也可以不用存,直接将处理后的图片缓存直接展示在界面上,这里需要改一下此处的代码,将上述代码注释掉,然后换成下面的那行,通过数组直接转成图片

 但是效果会存在色彩的失真,效果如下:

也尝试了PIL的九种不同图片模式: 1,L,P,RGB,RGBA,CMYK,YCbCr,I,F,最终效果也没达到,大概与我resize((530,750))这个有关,也没继续纠结,有兴趣的同学可以尝试一下。

这里简单提下PIL的九种不同图片模式:

modes描述
11位像素,黑和白,存成8位的像素
L8位像素,黑白
P8位像素,使用调色板映射到任何其他模式
RGB3× 8位像素,真彩
RGBA4×8位像素,真彩+透明通道
CMYK4×8位像素,颜色隔离
YCbCr3×8位像素,彩色视频格式
I32位整型像素
F32位浮点型像素

4.实现效果

 

 

 可以实现简单的人脸对比,Similarity代表相似度值,值越小代表人脸与预设的图片越相似。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255863.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

使用百度AI接口进行人脸对比(Python SDK V3版本实现)

一.安装人脸识别 Python SDK 首先在当前的python环境中使用pip install baidu-aip安装人脸识别 Python SDK。 二.算法思路 1.首先通过python SDK中的AipFace类获取一个客户端对象。 from aip import AipFace""" 你的APPID&#xff0c;API_KEY和SECRET_KEY &q…

测试相貌相似度的软件,快乐相似脸 - 测试你们之间的长相相似度

快乐相似脸 - 测试你们之间的长相相似度 介绍 快乐相似脸 - 测试你们之间的长相相似度 快乐相似脸是一款用于测试两个人头像相似度的恶搞软件&#xff0c;无论你们是好朋友、基友、情侣或者拉拉&#xff0c;测一下你们俩到底长得像不像吧&#xff0c;看看你们缘分如何&#xff…

图像相似度对比分析软件,图像相似度对比分析法

有什么可以对比两张图片得出相似度的软件。 谷歌人工智能写作项目&#xff1a;神经网络伪原创 图像怎么进行比对 有什么软件可以把两张照片进行对比 查看相似度 1、Mix滤镜大师。IX滤镜大师免费提供将近200款默认滤镜&#xff0c;包括景深滤镜&#xff0c;散景滤镜&#xff…

华为OD机试真题B卷 Java 实现【Linux 发行版的数量】,附详细解题思路

一、题目描述 Linux 操作系统有多个发行版&#xff0c;distrowatch.com 提供了各个发行版的资料。这些发行版互相存在关联&#xff0c;例如 Ubuntu 基于 Debian 只开发而 Mint 又基于 Ubuntu 开发&#xff0c;那么我们认为 Mint 同 Debian 也存在关联。 发行版集是一个或多个…

wrs-arcface虹软人脸识别

前言 虹软人脸识别组件&#xff0c;支持活体识别、离线识别、图片人脸特征识别、图片是否同一人对比、相机人脸识别或对比,虹软免费版请使用这个插件https://ext.dcloud.net.cn/plugin?id6084 虹软SDK版本号&#xff1a; Android:V3.0 ios:V3.0 功能 支持活体识别、离线识…

使用讯飞人脸对比API

参考官方文档&#xff1a; 讯飞人脸对比Web API文档 附加文档&#xff1a;错误码查询 运行前&#xff1a;请先填写appid、apisecret、apikey以及图片路径 appid、apisecret、apikey在控制台创建新应用后获取 from datetime import datetime from wsgiref.handlers import forma…

PHP 调用百度人脸对比

本文章主要介绍人脸对比API能力、应用场景、请求实例、参数说明。 接口能力 两张人脸图片相似度对比&#xff1a;比对两张图片中人脸的相似度&#xff0c;并返回相似度分值。 多种图片类型&#xff1a;支持生活照、证件照、身份证芯片照、带网纹照四种类型的人脸对比。 活体检测…

人脸识别,人脸对比技术及案例实现方案

人脸识别&#xff0c;人脸对比技术及案例实现方案 一、各个人脸识别公司、系统简介1.1 虹软1.2 Face旷视1.3 云脉1.4 腾讯AI1.5 1MB轻量级人脸检测模型1.6 SeetaFace-科院计算机所开源项目 二、基于虹软的Java人脸识别2.1 人脸识别SDK2.2 Java项目搭建2.2.1 下载Demo项目2.2.2 …

【百度AI_人脸识别】图片对比相似度、人脸对比登录(调摄像头)

人脸对比 此文档功能&#xff1a; 两张人脸图片相似度对比&#xff1a;比对两张图片中人脸的相似度&#xff0c;并返回相似度分值。存档一张图片与调用的摄像中的人脸进行对比。项目、资源下载&#xff1a;https://download.csdn.net/download/m0_70083523/87150842?spm1001.2…

Missing-Semester Lec1 Solution

操作系统&#xff1a; m a c O S M o n t e r e y v e r s i o n 12.6 macOS \ Monterey version \ 12.6 macOS Montereyversion 12.6 1、查看shell是否符合要求 echo $SHELL /bin/zsh2、在/tmp下新建一个名为missing的文件夹 mkdir missing3、用man查看程序touch的使用手册…

怎么做自媒体,这份入门攻略,建议收藏

1. 选择合适的平台 现在的自媒体平台非常多&#xff0c;有短视频平台、长视频平台、图文平台等&#xff0c;你可以依照自己的喜好去选择&#xff0c;不过要尽量选择用户量大一些的&#xff0c;也可以直接多个平台分发。 2. 确定领域 这是很关键的一步&#xff0c;你要选择你擅…

零基础使用ChatGPT写一个小游戏---文末附源码

ChatGPT&#xff1a;赋能自然语言处理的多种应用领域 ChatGPT是当今最先进的人工智能对话系统之一&#xff0c;已经被证明可以支持许多不同的自然语言处理应用程序。以下是ChatGPT可以运行的几个领域&#xff1a; 聊天机器人 ChatGPT作为一个建立在自然语言处理技术上的人工…

你是不是想做影视剪辑奈何不会写文案?我来帮你搞定文案

影视剪辑的本质就是我们进行一系列的主题动作分解组合&#xff0c;完成蒙太奇形象的塑造&#xff0c;影视剪辑主要分为几个步骤&#xff1a; 第一&#xff1a;视频素材准备 第二&#xff1a;文案素材准备 第三&#xff1a;确定剪辑方案 第四&#xff1a;剪辑手段选择 第五&…

短视频平台上亿用户都听过的声音|盘点三款超级好用的配音工具(内附教程哦~)

“这个女人叫小美”“这个男人叫小帅” 是不是很神奇&#xff0c;明明只是文字&#xff0c;耳朵却仿佛听到了声音&#xff0c;脑海里甚至浮现出了画面&#xff01;现在很多网上爆火的影视解说&#xff0c;都在用这一套文案话术&#xff0c;并且都配上了或声音厚实有磁性&#…

2023年集卡活动简记

文章目录 支付宝总评&#xff1a;【推荐】年味浓&#xff0c;必中奖&#xff0c;单倍金额不算少。只关注开奖可以除夕当天玩儿。集卡分1.88元难度&#xff1a;【非常低】必中奖时间投入&#xff1a;【较少】无需打开其他App&#xff0c;比较轻松。操作体验&#xff1a;【好】活…

超实用的配音软件推荐|想做短视频,还不快点进来看看

要说当下最火的行业&#xff0c;当属短视频自媒体行业了。各大平台短视频区块的崛起&#xff0c;给我们创造了很多机会&#xff0c;但在加入后&#xff0c;却又发现没那么简单。那么&#xff0c;我们到底应该如何正确的加入短视频创作行列呢&#xff1f; 接下来我将从各个方面…

2023最新版会声会影有哪些新功能介绍?

会声会影是Corel制作的一款功能强大的视频编辑软件&#xff0c;英文名&#xff1a;Corel VideoStudio。会声会影2023作为当下最为受欢迎的视频编辑处理程序&#xff0c;其在业内可以说享有极高的知名度&#xff1b;而全新的2023版本更是如此&#xff0c;很多忠实的用户都想来体…

短视频优质作者必备|配音神器分享|那些你刷视频时肯定听过的声音

相信很多朋友在刷短视频时&#xff0c;都有刷到过这样的声音。 热门电影解说博主都在用的声音 这类声音多出现在影视解说或漫画解说类的视频中。 很多朋友也想做这样的配音&#xff0c;却不知道用什么软件&#xff0c;从哪里做&#xff0c;怎么做。所以今天&#xff0c;我给大家…

全网最简单的短视频配音教程奉上|学到就是赚到

短视频的爆火&#xff0c;相信大家都有目共睹&#xff0c;想要在诺大的短视频海洋中&#xff0c;找到自己的一席之地&#xff0c;视频的制作至关重要&#xff01;不光要有精美的画面&#xff0c;优秀的文案&#xff0c;更需要好的旁白配音与之搭配。这个时候&#xff0c;有的朋…

超多热门视频都在用的声音|只要一部手机就能制作的配音神器

文章开始之前&#xff0c;咱们先来看一段视频↓↓↓ 太阳下了有月光 视频开头的声音是不是非常丰富自然呢&#xff1f;是不是听起来很像真人的声音呢&#xff1f;什么&#xff01;&#xff1f;你以为这就是真人&#xff1f;当然不是&#xff01;这就是最近各大短视频平台非常火…