使用 OpenCV 与 Face++ 人脸识别
今天看到一篇文章《使用 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++ 人脸识别的更多相关文章
- 【从零学习openCV】IOS7人脸识别实战
前言 接着上篇<IOS7下的人脸检測>,我们顺藤摸瓜的学习怎样在IOS7下用openCV的进行人脸识别,实际上非常easy,因为人脸检測部分已经完毕,剩下的无非调用openCV的方法对採集 ...
- 基于Opencv快速实现人脸识别(完整版)
无耻收藏网页链接: 基于OpenCV快速实现人脸识别:https://blog.csdn.net/beyond9305/article/details/92844258 基于Opencv快速实现人脸识 ...
- Opencv摄像头实时人脸识别
Introduction 网上存在很多人脸识别的文章,这篇文章是我的一个作业,重在通过摄像头实时采集人脸信息,进行人脸检测和人脸识别,并将识别结果显示在左上角. 利用 OpenCV 实现一个实时的人脸 ...
- 手把手教你如何用 OpenCV + Python 实现人脸识别
下午的时候,配好了OpenCV的Python环境,OpenCV的Python环境搭建.于是迫不及待的想体验一下opencv的人脸识别,如下文. 必备知识 Haar-like 通俗的来讲,就是作为人脸特 ...
- opencv 利用Haar 人脸识别
#include <opencv2/opencv.hpp> #include <cstdio> #include <cstdlib> #include <io ...
- OpenCV学习(38) 人脸识别(3)
前面我们学习了基于特征脸的人脸识别,现在我们学习一下基于Fisher脸的人脸识别,Fisher人脸识别基于LDA(线性判别算法)算法,算法的详细介绍可以参考下面两篇教程内容: ...
- OpenCV学习(37) 人脸识别(2)
在前面一篇教程中,我们学习了OpenCV中基于特征脸的人脸识别的代码实现,我们通过代码 Ptr<FaceRecognizer> model = createEigenFaceR ...
- OpenCV学习(36) 人脸识别(1)
本文主要参考OpenCV人脸识别教程:http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html 1.OpenCV ...
- OpenCV图像处理以及人脸识别
OpenCV基础 OpenCV是一个开源的计算机视觉库.提供了很多图像处理常用的工具 批注:本文所有图片数据都在我的GitHub仓库 读取图片并显示 import numpy as np import ...
- AI人工智能之基于OpenCV+face_recognition实现人脸识别
因近期公司项目需求,需要从监控视频里识别出人脸信息.OpenCV非常庞大,其中官方提供的人脸模型分类器也可以满足基本的人脸识别,当然我们也可以训练自己的人脸模型数据,但是从精确度和专业程度上讲Open ...
随机推荐
- MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份
一.视图 -- view 视图:是一个虚报表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据. 视图有如下特点: 1.视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系 ...
- JavaScript 评论添加练习
JavaScript 评论添加练习 本次所学内容: //var str = '<li>'+value+'</li>'; 支付串和变量的拼接 //ul.innerHTML += ...
- UVA-624 CD---01背包+输出路径
题目链接: https://vjudge.net/problem/UVA-624 题目大意: 这道题给定一个时间上限,然后一个数字N,后面跟着N首歌的时间长度,要我们 求在规定时间w内每首歌都要完整的 ...
- POJ-2234 Matches Game---尼姆博奕裸题
题目链接: https://vjudge.net/problem/POJ-2234 题目大意: 尼姆博奕裸题 思路: 直接异或 #include<iostream> #include< ...
- Redis、Memcache与MongoDB的区别
>>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...
- HTML笔记04---计时事件
JavaScript运动01 计时事件 1.语法:var t=setTimeout("javascript语句",毫秒); setTimeout() 方法会返回某个值.在上面的语句 ...
- python-复杂生成式
1.复杂的列表生成式HTML表格: 注:字符串可以通过%进行格式,用指定的参数化代替%s.字符串的join()方法可以把一list拼接成一个字符串. 把没有几个的分数标记为红色: d = { 'Ada ...
- 毕业回馈--89C51keil工程的创建
声明:毕业回馈类博客均为大学毕业前夕同同学共享内容.为了给大学做一个总结,报答母校的栽培,才发起这样一个活动. ******************************************** ...
- 实验吧_简单的sql注入_1、2、3
简单的sql注入1 看着这个简单的界面,一时间没有特别好的思路,先输入一个1',发生了报错 初步猜测这是一个字符型的注入,他将我们输入的语句直接当成sql语句执行了,按题目的意思后面肯定过滤了很多注入 ...
- TensorFlow学习笔记(MNIST报错修正 适用Tensorflow1.3)
在Tensorflow实战Google框架下的深度学习这本书的MNIST的图像识别例子中,每次都要报错 错误如下: Only call `sparse_softmax_cross_entropy_ ...