通过调用face++接口实现人脸识别(Java)

(24) 2024-09-02 15:01:01

人脸识别调用face++接口测试

一、需要了解的一些概念

(1)前沿生态-----图像识别技术

  • 图像识别技术是人工智能的一个重要领域。它是对图像进行识别,以识别各种不同模式的目标和对象的技术
  • 图像识别技术是立体视觉、运动分析、数据融合等实用技术的基础,在地图、导航、天气预报、环境监测等许多领域有重要价值

(2)人脸face_token

  • 人脸是指在人脸识别技术中指在图像中发现的人脸,当对一张照片进行检测时,会将检测到的人脸记录下来,包括人脸识别等等,如下图:通过调用face++接口实现人脸识别(Java) (https://mushiming.com/)  第1张
  • 注意:对同一张图片进行多次人脸检测,对同一人脸会得到不同的face_token

(3)人脸集合 faceSet

  • 人脸集合(FaceSet)是用来存储检测到人脸的存储对象(也就是原来存储很多个不同的face_token的集合)。一个FaceSet内face_token是不重复的。

(4)人脸搜索

  • 计算机检测到图片中一个人脸之后,通过人脸判断人身份的过程被称为人脸搜索。
  • 人脸搜索是指采集用户新的人脸,在多个已知身份用户的人脸集合中进行搜索,找出新的人脸属于哪一 个已知身份用户。人脸搜索需要调用Search API。
  • 调用URL
    https://api-cn.faceplusplus.com/facepp/v3/search
  • 调用方法 POST
  • 请求体格式 multipart/form-data
  • faces数组中单个元素的结构:
    通过调用face++接口实现人脸识别(Java) (https://mushiming.com/)  第2张

二、Web API

(1)注册账号

  • 首先,您需要有一个账号(如果您已经注册了账号,请忽略这一步)
  • 如果您还没有注册,可以在Face++ 官网 点击页面右上角的“注册”,在注册页面根据引导,完成注册。注册时可选择使用短信验证或是邮箱验证。
    通过调用face++接口实现人脸识别(Java) (https://mushiming.com/)  第3张
  • 注册成功后,您需要选择开发者类型并补充对应的信息:
    通过调用face++接口实现人脸识别(Java) (https://mushiming.com/)  第4张

(2)登录账号

  • 输入刚刚注册的账号密码进行登录。
  • 要调用 API,需要先创建一个 API Key(API 密钥),它是使用 API 和 SDK 的凭证。
  • 登录成功进入到如下页面:按照红色框提示查看自己的秘钥(注册成功之后都有一个创建的应用,应用 名称可以改为自定义的名称,API KEY 和 API SECRET 是自动生成,不可以更改,我们直接使用就可 以):

通过调用face++接口实现人脸识别(Java) (https://mushiming.com/)  第5张

(3)入门学习

  • 好了,所有需要的操作都已经完成,我们现在可以跟着API 文档 ,进行接入了。

三、基于Java语言调用Detect API进行人脸识别测试

  • Detect API
public class FaceTest { 
    public static void main(String[] args) throws Exception{ 
    //设置需要识别图像 File file = new File("C:\\Users\\18902\\Desktop\\lym.jpg"); //获取图像信息 byte[] buff = getBytesFromFile(file); //准备一个URL对象:URL String url = "https://api-cn.faceplusplus.com/facepp/v3/detect"; HashMap<String, String> map = new HashMap<>(); HashMap<String, byte[]> byteMap = new HashMap<>(); //你在Face++官网创建的API_KEY map.put("api_key", "your api key"); map.put("api_secret", "your api secrect"); byteMap.put("image_file", buff); try{ 
    byte[] bacd = post(url, map, byteMap); String str = new String(bacd); System.out.println(str); }catch (Exception e) { 
    e.printStackTrace(); } } private final static int CONNECT_TIME_OUT = 30000; private final static int READ_OUT_TIME = 50000; private static String boundaryString = getBoundary(); protected static byte[] post(String url, HashMap<String, String> map, HashMap<String, byte[]> fileMap) throws Exception { 
    HttpURLConnection conne; URL url1 = new URL(url); conne = (HttpURLConnection) url1.openConnection(); conne.setDoOutput(true); conne.setUseCaches(false); conne.setRequestMethod("POST"); conne.setConnectTimeout(CONNECT_TIME_OUT); conne.setReadTimeout(READ_OUT_TIME); conne.setRequestProperty("accept", "*/*"); conne.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundaryString); conne.setRequestProperty("connection", "Keep-Alive"); conne.setRequestProperty("user-agent", "Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.1;SV1)"); DataOutputStream obos = new DataOutputStream(conne.getOutputStream()); Iterator iter = map.entrySet().iterator(); while(iter.hasNext()){ 
    Map.Entry<String, String> entry = (Map.Entry) iter.next();
THE END

发表回复