Teste de interface de reconhecimento facial Baidu AI pontuação de valor facial reconhecimento de gênero reconhecimento de objeto Java pontuação de valor facial

Teste de interface de reconhecimento facial Baidu AI

Eu estava trabalhando em um projeto recentemente, e acabei de conseguir o reconhecimento facial. Tive medo de esquecer como chamá-lo no futuro. Vou gravar aqui.

Em primeiro lugar, já configuramos a interface do Baidu por padrão (aplicativo do aplicativo, AK gerado, SK etc.)

Não há muito a dizer, vá diretamente para o código

package com.test;
import com.baidu.ai.aip.utils.HttpUtil;
import com.baidu.ai.aip.utils.GsonUtils;
import java.util.*;
import org.json.JSONObject;
import java.io.BufferedReader;i
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;

@SpringBootApplication
public class helloworld {
    /**
     * 获取权限token
     * @return 返回示例:
     * {
     * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
     * "expires_in": 2592000
     * }
     */
    public static String getAuth() {
        // 官网获取的 API Key 更新为你注册的
        String clientId = "官网获取的 API Key 更新为你注册的";
        // 官网获取的 Secret Key 更新为你注册的
        String clientSecret = "官网获取的 Secret Key 更新为你注册的";
        return getAuth(clientId, clientSecret);
    }

    /**
     * 获取API访问token
     * 该token有一定的有效期,需要自行管理,当失效时需重新获取.
     * @param ak - 百度云官网获取的 API Key
     * @param sk - 百度云官网获取的 Securet Key
     * @return assess_token 示例:
     * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
     */
    public static String getAuth(String ak, String sk) {
        // 获取token地址
        String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
        String getAccessTokenUrl = authHost
                // 1. grant_type为固定参数
                + "grant_type=client_credentials"
                // 2. 官网获取的 API Key
                + "&client_id=" + ak
                // 3. 官网获取的 Secret Key
                + "&client_secret=" + sk;
        try {
            URL realUrl = new URL(getAccessTokenUrl);
            // 打开和URL之间的连接
            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.err.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String result = "";
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
            /**
             * 返回结果示例
             */
            System.err.println("result:" + result);
            JSONObject jsonObject = new JSONObject(result);
            String access_token = jsonObject.getString("access_token");
            System.out.println(access_token);
            return access_token;
        } catch (Exception e) {
            System.err.printf("获取token失败!");
            e.printStackTrace(System.err);
        }
        return null;
    }

    /**
     * 重要提示代码中所需工具类
     * FileUtil,Base64Util,HttpUtil,GsonUtils请从
     * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
     * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
     * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
     * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
     * 下载
     */
    public static String faceDetect() {
        String clientId = "XXXXXXXXXXXXXXXXXXXXXXXXX";
        // 官网获取的 Secret Key 更新为你注册的
        String clientSecret = "XXXXXXXXXXXXXXXXXXXXXXXX";
        // 请求url
        String Filepath = "这里填你想要识别图片的路径地址,记得java中要转义“\”";
        String image = Base64ImageUtils.GetImageStrFromPath(Filepath);
        System.out.println(image);
        String url = "https://aip.baidubce.com/rest/2.0/face/v3/detect";
        try {
            Map<String, Object> map = new HashMap<>();
            System.out.println(image);
            map.put("image", image);
            map.put("face_field", "faceshape,facetype,age,beauty,gender");
            map.put("image_type", "BASE64");

            String param = GsonUtils.toJson(map);

            // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
            String accessToken = getAuth(clientId,clientSecret);

            String result = HttpUtil.post(url, accessToken, "application/json", param);
            System.out.println(result);
            //
            translate.tran(result);

            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        helloworld.faceDetect();
    }

      O código fornecido no site oficial é identificado pelo código de identificação FaceToken. Neste programa, mudei esse método para o código Base64. Pessoalmente, acho que o código Base64 é mais utilizável.

As ferramentas usadas pela API do Baidu estão incluídas nos comentários e podem ser baixadas diretamente do site

A seguir, mostrarei a estrutura do diretório para facilitar o entendimento

Se você encontrar algum problema, você pode deixar uma mensagem abaixo e eu discutirei com você

Parte dos resultados após exibição bem-sucedida

Em segundo lugar, chamar a API requer o desenvolvimento de operações relacionadas ao Meaven. Como é tarde da noite quando este documento é carregado, o autor irá atualizá-lo conforme necessário. Você pode prestar atenção às atualizações subsequentes. Se este documento o ajudar, você pode aprovar este documento. Deixe mais pessoas verem isso! ^ _ ^

Acho que você gosta

Origin blog.csdn.net/weixin_45713361/article/details/108633003
Recomendado
Clasificación