男神鹏:人工智能人脸识别操作。
Python 中的 人臉識(shí)別 是基于OpenCV 來(lái)進(jìn)行實(shí)現(xiàn)的。
?
OpenCV 可以通過(guò) 頭videoCapture()方法打開(kāi)攝像
攝像頭變量 = cv2.VideoCapture(n)? ?n為整數(shù),內(nèi)置攝像頭為0,若有其他攝像頭則依次為1,2,3,4,。。。
cap = cv2.VideoCapture(0)
?
攝像頭是否處于打開(kāi)狀態(tài)可以通過(guò)isOpened()方法進(jìn)行判斷
攝像頭變量.isOpened()
若打開(kāi)返回True,反正返回False
cap.isOpened()
?
布爾變量,圖像變量 = 攝像頭變量.read()? 可以通過(guò)read() 方法讀取圖像
布爾變量為True,代表讀取成功,False代表讀取失敗
ret,img = cap.read()
?
釋放攝像頭
攝像頭變量.release()
cap.release()
按鍵變量? = cv2.waitKey(n)? ?waitKey(n)? 方法可以獲取用戶(hù)輸入,同時(shí)可獲取按鍵的ASCLL碼值
話不多說(shuō),直接上代碼。
下面是登錄注冊(cè)的人臉實(shí)現(xiàn)系統(tǒng)。
?
from django.shortcuts import render #導(dǎo)包 from django.http import HttpResponse,HttpResponseRedirect #導(dǎo)入類(lèi)路由庫(kù) from django.views import View #導(dǎo)入數(shù)據(jù)庫(kù)類(lèi) from myapp.models import User import json #導(dǎo)入時(shí)間模塊 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#定義注冊(cè)邏輯 class Sign_Up(View):
#定義注冊(cè)接收方法 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): # 獲取攝像頭屏幕對(duì)象 ret,frame = cap.read() gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY ) # 識(shí)別臉部 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)
# 等待結(jié)束 如果按q鍵就結(jié)束 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('請(qǐng)換一個(gè)用戶(hù)名') else: user = User(username=username) user.save() return HttpResponse('注冊(cè)成功')
#定義登錄邏輯 class Log_IN(View):
#定義注冊(cè)接收方法 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): # 獲取攝像頭屏幕對(duì)象 ret,frame = cap.read() gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY ) # 識(shí)別臉部 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)
# 等待結(jié)束 如果按q鍵就結(jié)束 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('識(shí)別頭像不匹配') else: return HttpResponse('登錄成功') 這些只是后端代碼,前端代碼就是通過(guò)axios來(lái)實(shí)現(xiàn)的。 如需有有疑問(wèn),可以在評(píng)論區(qū)里評(píng)論。
轉(zhuǎn)載于:https://www.cnblogs.com/lyp0626/p/10590499.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的男神鹏:人工智能人脸识别操作。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pesos是什么国家的币
- 下一篇: 求数组的子数组之和的最大值IV