ホームページ >Java >&#&チュートリアル >JavaとHuawei Cloudのフェイス比較インターフェースの呼び出しロジックを詳細に分析

JavaとHuawei Cloudのフェイス比較インターフェースの呼び出しロジックを詳細に分析

WBOY
WBOYオリジナル
2023-07-07 19:04:401601ブラウズ

Java と Huawei Cloud の顔比較インターフェイスの呼び出しロジックとコード例の詳細な説明

人工知能技術の急速な発展に伴い、顔認識は現代社会で広く使用される技術手段になりました。 Huawei Cloudは、顔画像を比較して認識できる顔比較インターフェースを提供します。この記事では、Java プログラミング言語を使用して Huawei Cloud の顔比較インターフェイスの呼び出しロジックを呼び出す方法を詳しく紹介し、対応するコード例を添付します。

まず、Huawei Cloud 上に顔比較サービス インスタンスを作成し、認証権限に対応する API キーと秘密キーを取得する必要があります。

次に、Java プログラミング言語を使用して、顔比較インターフェイスの呼び出しロジックを実装する必要があります。まず、Apache HttpClient や Fastjson などの対応する依存ライブラリを導入する必要があります。

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;

次に、顔比較のためのインターフェイス呼び出しを行い、比較する 2 人の人物を渡すメソッドを定義する必要があります。パラメータとしての顔画像の Base64 エンコード文字列:

public static double compare(String image1, String image2) {
    double similarity = 0.0;
    try {
        // 根据实际的服务部署地区选择对应的API地址
        String apiUrl = "https://face.cn-north-1.myhuaweicloud.com/v2/compare-face";
        
        // 创建HttpPost对象,并设置请求的URL
        HttpPost httpPost = new HttpPost(apiUrl);
        
        // 设置请求的头部信息
        httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
        httpPost.setHeader("X-Auth-Token", getAuthToken());
        
        // 设置请求的内容参数
        JSONObject requestObj = new JSONObject();
        requestObj.put("image1", image1);
        requestObj.put("image2", image2);
        
        StringEntity requestEntity = new StringEntity(requestObj.toJSONString(), ContentType.APPLICATION_JSON);
        httpPost.setEntity(requestEntity);

        // 创建HttpClient对象,并发送HttpPost请求
        HttpClient httpClient = HttpClientBuilder.create().build();
        HttpResponse response = httpClient.execute(httpPost);

        // 获取接口返回的结果
        HttpEntity entity = response.getEntity();
        String result = EntityUtils.toString(entity, "UTF-8");

        // 解析接口返回的结果
        JSONObject responseObj = JSONObject.parseObject(result);
        similarity = responseObj.getDouble("similarity");
    } catch (Exception e) {
        e.printStackTrace();
    }
    return similarity;
}

上記のコードでは、まず顔比較インターフェースの API アドレス、リクエストヘッダ情報、リクエストパラメータ情報を設定します。次に、HttpClient を使用して HttpPost リクエストを送信し、インターフェイスから返される結果を取得します。

最後に、認証トークンを取得するメソッドも定義する必要があります。これは、インターフェイスが呼び出される前にトークンを取得するために使用されます。

public static String getAuthToken() {
    String authToken = "";
    try {
        // 根据实际的服务部署地区选择对应的API地址
        String apiUrl = "https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens";
        
        // 创建HttpPost对象,并设置请求的URL
        HttpPost httpPost = new HttpPost(apiUrl);
        
        // 设置请求的头部信息
        httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
        
        // 设置请求的内容参数
        String requestBody = "{"auth":{"identity":{"methods":["password"],"password":{"user":{"name":"<your_account_name>","password":"<your_password>","domain":{"name":"<your_domain_name>"}}}},"scope":{"project":{"name":"<your_project_name>"}}}}";
        StringEntity requestEntity = new StringEntity(requestBody, ContentType.APPLICATION_JSON);
        httpPost.setEntity(requestEntity);

        // 创建HttpClient对象,并发送HttpPost请求
        HttpClient httpClient = HttpClientBuilder.create().build();
        HttpResponse response = httpClient.execute(httpPost);

        // 获取接口返回的结果
        Header[] headers = response.getHeaders("X-Subject-Token");
        if (headers.length > 0) {
            authToken = headers[0].getValue();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return authToken;
}

上記のコードでは、最初に認証インターフェースのAPI アドレス、リクエストヘッダ情報、リクエストパラメータ情報。次に、HttpClient を使用して HttpPost リクエストを送信し、インターフェイスから返された結果で認証トークンを取得します。

最後に、main 関数で Compare メソッドを呼び出して、顔比較操作を実行し、結果を出力します。

public static void main(String[] args) {
    String image1 = "<your_face_image1_base64_string>";
    String image2 = "<your_face_image2_base64_string>";

    double similarity = compare(image1, image2);
    System.out.println("相似度:" + similarity);
}

上記のコード例では、0f88ee6c6d2b110141ca1d2aec03c93d を変更する必要があります。 4fb382c6c5447a2af4285e5a38a27e34、ae524751008745e0c973cf0ca4883dff、1399519db19001a3f97bed6a74368678 をそれぞれ実際の Huawei Cloud アカウント、パスワード、ドメイン名、プロジェクト名に置き換え、f065b767b3e2a59e89306a81cd8e3463、1a1557c7cbba09a24fdeebd1a5a5fa9a を比較する顔に置き換えます。 Base64 でエンコードされた画像の文字列。

要約すると、この記事では、Java と Huawei Cloud のフェイス比較インターフェイスの呼び出しロジックを詳細に分析し、対応するコード例を提供します。読者の顔比較の実践に役立つことを願っています。

以上がJavaとHuawei Cloudのフェイス比較インターフェースの呼び出しロジックを詳細に分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。