zoukankan      html  css  js  c++  java
  • 男神鹏:人工智能人脸识别操作。

    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来实现的。
    如需有有疑问,可以在评论区里评论。
  • 相关阅读:
    Kuangbin带你飞 专题二十 斜率DP
    牛客每日一题3月
    2020 SWJTU-ICPC Training Round #2(18年福建省赛)部分题解
    codeforces每日一题31-40
    SWJTU校队训练&Codeforces&Atcoder&&牛客三月补题
    Kuangbin带你飞-专题九连通图
    POJ 3667 Hotel(线段树区间合并)
    AtCoder Beginner Contest 157(题解)
    2.22专项测试复盘
    2.21专项测试复盘
  • 原文地址:https://www.cnblogs.com/lyp0626/p/10590499.html
Copyright © 2011-2022 走看看