如何第二次人脸识别(手把手教你实现人脸识别,有手就行)

应用领域
  • 金融领域。人脸识别是目前金融领域应用最广泛的。目前国内金融监管要求严格,金融相关产品都需要实名认证,安全性要求高,如生物识别、银行卡ocr识别、身份证ocr识别、人证比对等,已经成为各大手机银行、金融app、保险app等不可或缺的环节。
  • 安全领域。目前,大量的企业、住宅、社区、学校等安全管理越来越普及,人脸门禁系统已经成为一种非常流行的安防方式。
  • 访问字段。很多城市的火车站都安装了人脸识别门禁设备,检查人证比对,一些城市的地铁站也可以用人脸识别进行地铁出入口。
  • 泛娱乐领域。现在市面上流行的美颜相机、网络直播、短视频等等,都是基于人脸识别来对人脸进行美颜和特效。
  • 公安司法领域。公安系统在追捕逃犯时也会使用人脸识别系统定位逃犯。目前监狱系统还会通过人脸识别系统对犯人进行报警和保护。
  • 自助设备。如银行自动取款机、无人超市等。
  • 出席和会议。比如上班考勤,会议考勤面壁等。目前人脸识别市场的巨头主要有商场和很多领域的巨头公司投资的小公司。
  • 第一步:导入模块

    Dlib模块安装其实比较繁琐,耐心点。可以参考dlib安装。如果没有,看看其他教程。

    导入sys 导入CV2 导入face _ recognition # DLIB人脸识别库第二步:加载图片并将测试图片数字化作为我的偶像:



    face_img=face_recognition.load_image_file('1.png') print(face_img)

    打印结果:face _ img = face _ recognition . load _ image _ file(& # 39;1.png & # 39) print(face_img)打印结果:



    输出是三维图像矩阵,图像转换成矩阵。

    第三步:获取图片中的人脸数据

    提取面部特征代码,获得面部特征的位置:

    face_encodings=face_recognition.face_encodings(face_img)#进行特征提取向量化,获取人脸的编码 face_locations=face_recognition.face_locations(face_img)#五官对应的位置 print(face_encodings)

    图片中有几个人脸就有几个数组:人脸编码=人脸识别。Face _ encodings (face _ img) #执行特征提取和矢量化以获得人脸代码 Face _ locations = Face _ recognition。Face _ locations (face _ img) #五感对应的位置 print (face _



    第四步:人数计算

    这里只判断两个人是不是一个人,超过两个我们就退出。

    人脸识别二次开发

    n = len(face _ encodings) print(n) #这里只判断两个人是不是一个人,超过两个人就退出 如果n >;2: 打印(& # 39;两个人以上& # 39;) sys.exit()打印可以分为两种人:



    第五步:人脸比较

    #获取两个人的数据 Face 1 = Face _ encodings[0] Face 2 = Face _ encodings[1] Result = Face _ recognition。compare _ faces([面1],面2,容差= 0.6)



    判断不是同一个人。

    稍微修改一下,让表达更清楚:

    if result = =[True]: name = & # 39;一样& # 39; 打印(& # 39;两个人是同一个人& # 39;) else: print(& # 39;他们不是同一个人& # 39;) name = & # 39;与众不同& # 39;返回:



    第六步:框出人脸写上文字

    获取两个面的位置坐标:

    I in range(len(face _ encodings)): face _ encoding = face _ encoding[(I-1)]# Get face _ location = face _ locations[(I-1)] print(以相反的顺序



    元祖的四个数值分别代表框架的面的矩形框的四个点的坐标。

    拿到坐标后,开始画框,写文字:

    top,right,bottom,left=face_location#确定出坐标 #画框框 cv2.rectangle(face_img,(left,top),(right,bottom),(255,0,0))#传参分别为:图片,坐标,RGB颜色,框粗细 #写字上去 cv2.putText(face_img,name,(left-10,top-10),cv2.FONT_HERSHEY_DUPLEX,0.8,(255,255,0),2)#传参数分别为:图片,文字,坐标,字体,字体大小,颜色,粗细第七步:显示处理好的图像

    face_img_rgb=cv2.cvtColor(face_img,cv2.COLOR_BGR2RGB)#确保颜色不要混乱 #展示图像 cv2.imshow('compare',face_img_rgb) #设置等待关闭 cv2.waitKey(0)

    效果:上、右、下、左= face _ location #确定坐标 # Frame CV2。Rectangle (face _ img,(left,top),(right,bottom),(255,0,0)) #参数为:图片。框 #写 CV2。Puttext (face _ img,name,(左10,前10),CV2。font _ Hershey _ duplex,0.8,(255,255,0),2) # Thickness 第七步:显示处理后的图像 face _ img _ RGB = CV2。CVTcolor (face _ img,CV2。color _ bgr2rgb) #确保颜色不混淆 #显示图像 CV2。im show(& compare & # 39;,face_img_rgb) #设置等待关闭 cv2.waitKey(0)效果:



    你只需要一步一步的轻敲代码就可以完成代码。当然,为了方便直接cv,代码如下所示:

    # coding=gbk """ import sys import cv2 import face_recognition #dlib 人脸识别库 face_img=face_recognition.load_image_file('1.png') # print(face_img) face_encodings=face_recognition.face_encodings(face_img)#进行特征提取向量化,获取人脸的编码 face_locations=face_recognition.face_locations(face_img)#五官对应的位置 # print(face_encodings) n=len(face_encodings) print(n) #这里只做判断两个人是否为一个人,超出两个就退出了 if n>2: print('超过两个人') sys.exit() #获取两个人的数据 face1=face_encodings[0] face2=face_encodings[1] result=face_recognition.compare_faces([face1],face2,tolerance=0.6)#人脸比较,,误差不超过0.6则可以,默认值也为0.6 # print(result) if result==[True]: name='same' print('两个人为同一个人') else: print('两者不是同一个人') name='different' for i in range(len(face_encodings)): face_encoding=face_encodings[(i-1)] #倒序获取 face_location = face_locations[(i - 1)] # print(face_location)#获取人脸位置 top,right,bottom,left=face_location#确定出坐标 #画框框 cv2.rectangle(face_img,(left,top),(right,bottom),(255,0,0))#传参分别为:图片,坐标,RGB颜色,框粗细 #写字上去 cv2.putText(face_img,name,(left-10,top-10),cv2.FONT_HERSHEY_DUPLEX,0.8,(255,255,0),2)#传参数分别为:图片,文字,坐标,字体,字体大小,颜色,粗细 face_img_rgb=cv2.cvtColor(face_img,cv2.COLOR_BGR2RGB)#确保颜色不要混乱 #展示图像 cv2.imshow('compare',face_img_rgb) #设置等待关闭 cv2.waitKey(0)

    标出了两个人脸并写上为different,就是不同的意思,当然本篇文章为了给大家简单介绍实现人脸识别,并没有做过多的复杂实现,近段时间我研究人脸识别也做了一些复杂的功能实现,感兴趣也可以一起聊聊。# coding = gbk & # 34;"" import sys import cv2 import face _ recognition # DLIB人脸识别库 face _ img = face _ recognition . load _ image _ file(& # 39;1.png & # 39) # print(face _ img) face _ encodings = face _ recognition。face _ encodings (face _ img) #对于特征提取和矢量化,获取人脸代码 face _ locations = face _ recognition。Face _ locations (face _ img) #五官对应的位置 # print(face _ encodings) n = len(face _ encodings) print 2: print(& # 39;两个人以上& # 39;) sys.exit() #获取两个人的数据 Face 1 = Face _ encodings[0] Face 2 = Face _ encodings[1] Result = Face _ recognition . compare . Tolerance = 0.6)#人脸比较,如果误差小于0.6,默认值为0.6 # print(Result) if Result = =[true]: name = & # 39;一样& # 39; 打印(& # 39;两个人是同一个人& # 39;) else: print(& # 39;他们不是同一个人& # 39;) name = & # 39;与众不同& # 39; for I in range(len(face _ encodings)): face _ encoding = face _ encodings[(I-1)]# Get face _ location = face _ locations[(I-1)]0) #参数有:图片、坐标、RGB颜色、边框粗细 # Write CV2。Puttext (face _ img,name,(左10,前10),CV2。font _ hershey _ duplex,0.8,。颜色,厚度 face _ img _ RGB = cv2。cvtcolor (face _ img,cv2。color _ bgr2rgb) #确保颜色不混淆 #显示图像 cv2 . im Show(& # 39;比较& # 39;,face_img_rgb) #设置等待关闭 cv2.waitKey(0)标记两张脸,写为不同,表示不同的意思。当然,为了给大家简单介绍一下人脸识别的实现,本文并没有做太多复杂的实现。最近做了一些复杂的功能实现人脸识别,有兴趣可以一起聊聊。

    您可以还会对下面的文章感兴趣

    使用微信扫描二维码后

    点击右上角发送给好友