首页 > 其他 > 详细

男神鹏:人工智能人脸识别操作。

时间:2019-03-24 21:47:05      阅读:179      评论:0      收藏:0      [点我收藏+]

Python 中的 人脸识别 是基于OpenCV 来进行实现的。

 

OpenCV 可以通过 头videoCapture()方法打开摄像

摄像头变量 = cv2.VideoCapture(n)   n为整数,内置摄像头为0,若有其他摄像头则依次为1,2,3,4,。。。

cap = cv2.VideoCapture(0)

 

摄像头是否处于打开状态可以通过isOpened()方法进行判断

摄像头变量.isOpened()

若打开返回True,反正返回False

cap.isOpened()

 

布尔变量,图像变量 = 摄像头变量.read()  可以通过read() 方法读取图像

布尔变量为True,代表读取成功,False代表读取失败

ret,img = cap.read()

 

释放摄像头

摄像头变量.release()

cap.release()

按键变量  = cv2.waitKey(n)   waitKey(n)  方法可以获取用户输入,同时可获取按键的ASCLL码值

话不多说,直接上代码。

下面是登录注册的人脸实现系统。

 

from django.shortcuts import render
#导包
from django.http import HttpResponse,HttpResponseRedirect
#导入类路由库
from django.views import View
#导入数据库类
from myapp.models import User
import json
#导入时间模块
import time
import os
from mymac.settings import UPLOAD_ROOT
import cv2
import numpy as np
from myapp.my_compare import main_my,parse_arguments
from django.utils.decorators import method_decorator
from django.db import connection


#定义注册逻辑
class Sign_Up(View):

#定义注册接收方法
def post(self,request):
 
username = request.POST.get(‘username‘)

cap = cv2.VideoCapture(0)

face_cascade = cv2.CascadeClassifier("C:/Users/lenvov/AppData/Local/Programs/Python/Python37/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml")
my_count = 1

while(1):
# 获取摄像头屏幕对象
ret,frame = cap.read()
 
 
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY )
 
# 识别脸部
faces = face_cascade.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=3,minSize=(32,32))
for facerect in faces:
# 框处人脸
x,y,w,h = facerect
cv2.rectangle(gray,(x-10,y-10),(x+w+10,y+h+10),(0,255,0),3)

f = cv2.resize(gray[y:(y+h),x:(x+w)],(200,200))
 
 
# 生成摄像头视角窗口
cv2.imshow("capture",gray)

# 等待结束 如果按q键就结束
if cv2.waitKey(1) & 0xff == ord(‘q‘):
cv2.imwrite(UPLOAD_ROOT+‘/‘+username+‘_face.jpg‘,f)
break


# 释放摄像头
cap.release()
cv2.destroyAllWindows()


res = User.objects.filter(username=username).count()
if res > 0:
return HttpResponse(‘请换一个用户名‘)
else:
user = User(username=username)
user.save()
return HttpResponse(‘注册成功‘)
 




#定义登录逻辑
class Log_IN(View):

#定义注册接收方法
def post(self,request):

username = request.POST.get(‘username‘)


cap = cv2.VideoCapture(0)

face_cascade = cv2.CascadeClassifier("C:/Users/lenvov/AppData/Local/Programs/Python/Python37/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml")
my_count = 1

while(1):
# 获取摄像头屏幕对象
ret,frame = cap.read()
 
 
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY )
 
# 识别脸部
faces = face_cascade.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=3,minSize=(32,32))
for facerect in faces:
# 框处人脸
x,y,w,h = facerect
cv2.rectangle(gray,(x-10,y-10),(x+w+10,y+h+10),(0,255,0),3)

f = cv2.resize(gray[y:(y+h),x:(x+w)],(200,200))
 
 
# 生成摄像头视角窗口
cv2.imshow("capture",gray)

# 等待结束 如果按q键就结束
if cv2.waitKey(1) & 0xff == ord(‘q‘):
cv2.imwrite(UPLOAD_ROOT+‘/‘+username+‘_hou.jpg‘,f)
break


# 释放摄像头
cap.release()
cv2.destroyAllWindows()
 
res = User.objects.filter(username=username)[0]

args_list = []
args_list.append(‘C:/20170512-110547‘)
args_list.append(UPLOAD_ROOT+‘/‘+username+‘_face.jpg‘)
args_list.append(UPLOAD_ROOT+‘/‘+username+‘_hou.jpg‘)

res_float = main_my(parse_arguments(args_list))
print(res_float)


if res_float > 0.50:
return HttpResponse(‘识别头像不匹配‘)
else:
return HttpResponse(‘登录成功‘)
 
这些只是后端代码,前端代码就是通过axios来实现的。
如需有有疑问,可以在评论区里评论。

男神鹏:人工智能人脸识别操作。

原文:https://www.cnblogs.com/lyp0626/p/10590499.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!