今天看到一篇文章《使用 OpenCV 与 Face++ 实现人脸解锁》,感觉挺好玩,就照着作者的讲解,写了一下。详细内容还请看原作者文章。

 # *^_^* coding:utf-8 *^_^*
from __future__ import print_function __author__ = 'stone'
__date__ = '16-4-13' """
http://www.cnblogs.com/asmer-stone/p/5389383.html
""" import cv2
import numpy as np
import time
import requests
import os
import mimetypes face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
API_KEY = 'xxx'
API_SECRET = 'xxx'
BASE_URL = 'http://apicn.faceplusplus.com/v2' //用opencv检测人脸的函数,注释部分内容是检测并画出人脸区域。
def detect_face():    
cap = cv2.VideoCapture(0)
next_capture_time = time.time()
faces = [] if not cap.isOpened():
print("Capture Opening ERROR!") while 1:
ret, img = cap.read() # img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# if next_capture_time < time.time():
# next_capture_time += 0.1
# faces = face_cascade.detectMultiScale(img_gray, 1.3, 5)
# if faces is not None:
# for x, y, w, h in faces:
# img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
cv2.imshow("face_detect", img)
k = cv2.waitKey(1) & 0xFF
if k == ord('s'):
cv2.imwrite("image/face2.jpg", img)  //打开摄像头按下‘s’键即可保存图片
if k == 27:
break cap.release()
cv2.destroyAllWindows() def update_img(file_dir, oneface=True):  //上传图片到face++ 并返回face_id
url = '%s/detection/detect?api_key=%s&api_secret=%s&attribute=none' % (BASE_URL, API_KEY, API_SECRET)
if oneface:
url += '&mode=oneface'
files = {'img': (os.path.basename(file_dir), open(file_dir, 'rb'), mimetypes.guess_type(file_dir)[0])}
r = requests.post(url, files=files)
faces = r.json().get('face')
if faces is None:
print("No face")
else:
return faces[0]['face_id'] def compare(faceID1, faceID2):  //比较两张图片中的人脸的相似度函数
url = '%s/recognition/compare?api_key=%s&api_secret=%s&face_id1=%s&face_id2=%s' % (
BASE_URL, API_KEY, API_SECRET, faceID1, faceID2)
r = requests.get(url)
return r.json() if __name__ == "__main__":
faceID1 = update_img('image/lena.jpg')
faceID2 = update_img('image/17-1m.bmp')
if faceID2 and faceID1:
compare_json = compare(faceID1, faceID2)
print(compare_json)
if (compare_json['similarity'] > 90):  //相似在90以上打印yes,否则no
print("yes")
else:
print("no")
else:
print("Something wrong with the pictures!")

参考文献:《使用 OpenCV 与 Face++ 实现人脸解锁》:http://python.jobbole.com/84666/

使用 OpenCV 与 Face++ 人脸识别的更多相关文章

  1. 【从零学习openCV】IOS7人脸识别实战

    前言 接着上篇<IOS7下的人脸检測>,我们顺藤摸瓜的学习怎样在IOS7下用openCV的进行人脸识别,实际上非常easy,因为人脸检測部分已经完毕,剩下的无非调用openCV的方法对採集 ...

  2. 基于Opencv快速实现人脸识别(完整版)

    无耻收藏网页链接: 基于OpenCV快速实现人脸识别:https://blog.csdn.net/beyond9305/article/details/92844258 基于Opencv快速实现人脸识 ...

  3. Opencv摄像头实时人脸识别

    Introduction 网上存在很多人脸识别的文章,这篇文章是我的一个作业,重在通过摄像头实时采集人脸信息,进行人脸检测和人脸识别,并将识别结果显示在左上角. 利用 OpenCV 实现一个实时的人脸 ...

  4. 手把手教你如何用 OpenCV + Python 实现人脸识别

    下午的时候,配好了OpenCV的Python环境,OpenCV的Python环境搭建.于是迫不及待的想体验一下opencv的人脸识别,如下文. 必备知识 Haar-like 通俗的来讲,就是作为人脸特 ...

  5. opencv 利用Haar 人脸识别

    #include <opencv2/opencv.hpp> #include <cstdio> #include <cstdlib> #include <io ...

  6. OpenCV学习(38) 人脸识别(3)

                前面我们学习了基于特征脸的人脸识别,现在我们学习一下基于Fisher脸的人脸识别,Fisher人脸识别基于LDA(线性判别算法)算法,算法的详细介绍可以参考下面两篇教程内容: ...

  7. OpenCV学习(37) 人脸识别(2)

          在前面一篇教程中,我们学习了OpenCV中基于特征脸的人脸识别的代码实现,我们通过代码 Ptr<FaceRecognizer> model = createEigenFaceR ...

  8. OpenCV学习(36) 人脸识别(1)

    本文主要参考OpenCV人脸识别教程:http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html 1.OpenCV ...

  9. OpenCV图像处理以及人脸识别

    OpenCV基础 OpenCV是一个开源的计算机视觉库.提供了很多图像处理常用的工具 批注:本文所有图片数据都在我的GitHub仓库 读取图片并显示 import numpy as np import ...

  10. AI人工智能之基于OpenCV+face_recognition实现人脸识别

    因近期公司项目需求,需要从监控视频里识别出人脸信息.OpenCV非常庞大,其中官方提供的人脸模型分类器也可以满足基本的人脸识别,当然我们也可以训练自己的人脸模型数据,但是从精确度和专业程度上讲Open ...

随机推荐

  1. C++中const对象和非const对象调用成员函数问题

    一.类MyClass 二.主函数调用 三.结果

  2. WebStorm2018破解

    参考网站http://www.sdbeta.com/wg/2018/0302/220048.html修改整理如下: webstorm 2018.1正式版破解summary jetbrainscrack ...

  3. 南京邮电大学java程序设计作业在线编程第三次作业

    王利国的"Java语言程序设计第3次作业(2018)"详细 作业结果详细 总分:100 选择题得分:60  1. 设有如下定义语句: String s1="My cat& ...

  4. EOJ3536 求蛇形矩阵每一行的和---找规律

    题目链接: https://acm.ecnu.edu.cn/problem/3536/ 题目大意: 求蛇形矩阵的每一行的和,数据范围n<=200000. 思路: 由于n数据较大,所以感觉应该是需 ...

  5. EF CodeFirst方式 Fluent Api配置

    一.One-to-One Relationship[一对一关系] 两个表之间,只能由一个记录在另外一个表中.每一个主键的值,只能关联到另外一张表的一条或者零条记录.请记住,这个一对一的关系不是非常的普 ...

  6. 我是如何在公司项目中使用ESLint来提升代码质量的

    ESLint:你认识我吗 ESLint是一个语法规则和代码风格的检查工具. 和学习所有编程语言一样,想要入门ESLint,首先要去它的官网看看:https://eslint.org/. ESLint的 ...

  7. [LeetCode] Reshape the Matrix 重塑矩阵

    In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new o ...

  8. 前端监控系统(二)JS错误日志收集篇

    前端监控系统 目前已经上线,欢迎使用! 服务器搭建好了,可以着手开发了. 其实前端需要分析的数据有很多,包括,PVUV, 接口请求统计,耗时统计,JS错误统计,用户使用设备统计,用户地域分布,页面用户 ...

  9. testng中使用reportng报告

    1.pom.xml文件中添加依赖,重构一下项目(mvn compile) <dependency> <groupId>org.uncommons</groupId> ...

  10. [Codeforces 873B]Balanced Substring

    Description You are given a string s consisting only of characters 0 and 1. A substring [l, r] of s  ...