通过遍历 ‘./image/face_catalogue’ 目录下图片素材,作为面部模板。
读取 “ceshi7.jpeg” 图片文件,面部识别,对符合人脸的区域进行面部相似度比对,相似度最高的进行标记。

import cv2
import numpy as np
import os

face_catalogue 面部目录

class Face_comparison():

def __init__(self,img,model,file_name):# 人脸识别self.faceCascade = cv2.CascadeClassifier("./venv/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml")self.faceCascade_eye = cv2.CascadeClassifier("./venv/Lib/site-packages/cv2/data/haarcascade_eye.xml")self.img = imgself.shape = img.shapeself.model = modelself.file_name = file_namedef Similarity(self):# 截取图片面部区域,作为一个独立图片,用于保存或其他判断cropped = self.img[self.y:self.y + self.w, self.x:self.x + self.h]#图片灰度化cropped = cv2.cvtColor(cropped, cv2.COLOR_BGR2GRAY)#图片像素扩充与素材一致cropped = cv2.resize(cropped, (400, 400))#相似度比对label, confidence = self.model.predict(cropped)print(str((self.x, self.y, self.w, self.h)), str(label), self.file_name[str(label)], round(int(confidence), 4))#字体样式font = cv2.FONT_HERSHEY_TRIPLEX#文字标记cv2.putText(self.img, self.file_name[str(label)] +'_'+str(round(int(confidence),4)) , (self.x, self.y-5), font, 0.4, (0, 0, 255))def face_sign(self):faces = self.faceCascade.detectMultiScale(self.img, 1.15,10)#print(faces)for (self.x, self.y, self.w, self.h) in faces:#图像中面部识别相似度self.Similarity()# # 加入眼睛识别,如果存在眼睛在保存# eye = self.faceCascade_eye.detectMultiScale(cropped, 1.15)# if len(eye) > 0:cv2.rectangle(self.img, (self.x, self.y), (self.x + self.w, self.y + self.h), (0, 0, 200), 2)#如果图片比屏幕大,按照比例缩放,如果小就保持print('self.shape',self.shape,type(self.shape))if self.shape[0] >= 768 :self.shape_xs = round(self.shape[0]/768)print('shape_xs',self.shape_xs)self.img_new = cv2.resize(self.img, (round(self.shape[1]/self.shape_xs), round(self.shape[0]/self.shape_xs)))elif self.shape[1] >= 1366:self.shape_xs = round(self.shape[1] / 1366)print('shape_xs', self.shape_xs)self.img_new = cv2.resize(self.img, (round(self.shape[1] / self.shape_xs), round(self.shape[0] / self.shape_xs)))else:self.img_new = self.imgcv2.imshow('img', self.img_new)cv2.waitKey()cv2.destroyAllWindows()

def face_catalogue(catalogue):
#面部目录加载,每次读取图片加载一次太浪费效率
photos = list()
lables = list()
file_name = {}
# 遍历上层目录
for root, dirs, files in os.walk(catalogue):
# 查看存在多少个子目录
if files == []:
#print(‘root’, root, ‘dirs’, dirs, ‘files’, files)
for dir in dirs:
for root_son, dirs_son, files_son in os.walk(catalogue + “/%s” % dir):
#print(‘dir’, dir, ‘files’, files_son)
dir_id = dir[0:7]
dir_name = dir[8:]
#print(‘dir_id’, dir_id, ‘dir_name’, dir_name)
#增加字典
file_name[dir_id]=dir_name
#附件计数
file_num = 0
for file_son in files_son:
#print(‘file’, catalogue + “/%s/%s” % (dir, file_son))
img = cv2.imread(catalogue + “/%s/%s” % (dir, file_son), 0)
imga = cv2.resize(img, (400, 400))
photos.append(imga)
lables.append(int(dir_id))
file_num += 1
#print(‘序列号’,dir,‘素材数量:’,file_num)
#print(‘文件数’,set(lables),file_name)
model = cv2.face.LBPHFaceRecognizer_create()
model.train(photos, np.array(lables))
return model,file_name

if name == ‘main’:
#面部素材库加载
model,file_name = face_catalogue(‘./image/face_catalogue’)
#测试图片
img = cv2.imread(“ceshi7.jpeg”)
#生成类
face_sign = Face_comparison(img,model,file_name)
#调用函数
face_sign.face_sign()

python练手_opencv面部相似度标记相关推荐

  1. 70个Python练手项目列表 预祝大家 快乐

    小孩眺望远方,成人怀念故乡. 为此给大家分享一下珍藏的Python实战项目,祝大家节日快乐哦!!! Python 前言:不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说 ...

  2. 70个Python练手项目列表,偷偷练习卷死他们

    不管学习哪门语言都要做出实际的东西来,这个实际的东西就是项目 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自己想做的项目进行参考学习练手,你也可以从中寻找灵感去做自己 ...

  3. python小程序源代码-整理了适合新手的20个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...

  4. python小程序-【Python精华】100个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...

  5. python经典案例-20个Python练手经典案例,能全做对的人确实很少!

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 如果你感觉学不会?莫慌,小编推荐大家加入群, 前面548中间3 ...

  6. python小程序-整理了适合新手的20个Python练手小程序

    即刻关注公众号,发现世界的美好 100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3 ...

  7. python练手经典100例微盘_20个Python练手经典案例,能全做对的人确实很少!

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 如果你感觉学不会?莫慌,小编推荐大家加入群, 前面548中间3 ...

  8. python练手经典100例-20个Python练手经典案例,能全做对的人确实很少!

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 私信小编007即可自动获取Python学习教程,包含视频教程以 ...

  9. python编程100个小程序-【Python精华】100个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...

  10. python编程100个小程序-整理了适合新手的20个Python练手小程序

    即刻关注公众号,发现世界的美好 100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3 ...

最新文章

  1. MVC-前台调用后台action 传递upload file 参数问题
  2. Luogu P2982 [USACO10FEB]慢下来 Slowing down | dfs序、线段树
  3. 云南河道 kml文件_处理能力提升 4 倍 ,大疆智图 4 天完成 5 公里河道建模
  4. 【C语言基础】C语言异常捕获机制 - assert
  5. 用C#读取XML文档
  6. 是什么平台_什么是高空作业平台?
  7. AcWing 3. 完全背包问题(完全背包模板)
  8. 什么是VR、AR和MR
  9. HoloToolkit/unity远程实时传输视频
  10. Web开发之旅--使用Flask 实现REST架构的API
  11. r语言上机文本分析与词云绘制_R语言jiebaR包文本中文分词及词云上机练习,小白能做到...
  12. OpenCL: OpenCL快速入门教程
  13. ussd代码大全_USSD查询器app
  14. 电脑自动跳转加QQ好友html,自动添加QQ好友.html
  15. 计算机桌面黑屏有鼠标,win7系统启动黑屏只有显示鼠标指针怎么办(图文)
  16. pubwin操作记录
  17. 荣耀20特别版 鸿蒙,【首发】鸿蒙OS华为首款特别版荣耀20全球发布,3999元你会支持吗...
  18. canvas文字旋转功能
  19. Nexus Windows中搭建Nexus仓库
  20. win7需要计算机管理员权限,关于告诉你win7系统提示“需要管理员权限”的修复办法...

热门文章

  1. 高通Snapdragon Sensor Core(SSC)笔记
  2. Struts中动态ActionForm与静态ActionForm有什么区别?_
  3. 移动办公系统全自动加密和数字签名解决方案
  4. 怎样用计算机二元一次方程,键入公式在计算机如何键入二元一次方程式公式 – 手机爱问...
  5. 即时通讯软件(即聊天软件)代表软件列表
  6. 年会 炫酷 抽奖小程序
  7. 基于SSM的汽车租赁管理系统
  8. java xml解析 jdom_Java XML解析工具 JDOM介绍及使用实例
  9. Linux文件与目录常用操作
  10. 嗅探工具 --- wireshark、tcpdump、dsniff、ettercap、bettercap、netsniff-ng