バイドゥの顔検索の試み(JAVA)

顔認識は、人工知能の開発の下での生活の中で最も一般的なアプリケーションの1つである可能性があります。これは、顔認識技術の成熟度もある程度反映しています。Baidu Cloudは、顔認証用のAPIを提供しており、無料で試すことができます。今日それを試してみてください。

最初のステップ:登録とログイン

バイドゥアカウントを作成します。Baiduクラウドプラットフォームにログインし、Baiduネットワークディスクアカウントを使用します。

ステップ2:顔認識サービスを見つけて作成する

次に、[Create App]をクリックします。

作成が成功すると、APPID、APIKey、Secrect Keyの3つの重要な情報があります。

 ステップ3:顔を追加する

アプリケーションを入力したら、グループとユーザーを作成します

つまり、顔データベースには2つの顔があります。

ステップ4:プロジェクトと構成環境を作成する

JDKを設定すると、mavenはそれについて話しません。

Mavenプロジェクトを作成し、それにBaiduのSDKを追加します。つまり、Maid pomファイルでBaiduのパッケージを導入します

       <dependency>
            <groupId>com.baidu.aip</groupId>
            <artifactId>java-sdk</artifactId>
            <version>4.12.0</version>
        </dependency>

ステップ5:コーディング


import com.baidu.aip.face.AipFace;
import com.baidu.aip.util.Base64Util;
import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;

public class FaceTest {
    //需要修改为自己的
    private static final String APP_ID = "XXXX";
    private static final String API_KEY = "XXXX";
    private static final String SECRET_KEY = "XXXx";

    static AipFace client = null;

    static {
        client = new AipFace(APP_ID, API_KEY, SECRET_KEY);
        // 可选:设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);
    }

    public static void main(String[] args) throws IOException {
        //BASE64Decoder decoder = new BASE64Decoder();
        String file1 = "/Users/yuchk/Desktop/haha.png";
        byte[] img2 = FileToByte(new File(file1));
        // 需要填写自己的groupIdList
        System.out.println(searchFace(img2, "car"));
    }
    private static String searchFace(byte[] arg0, String groupIdList) {
        String imgStr = Base64Util.encode(arg0);
        String imageType = "BASE64";
        HashMap<String, String> options = new HashMap<String, String>();
        options.put("quality_control", "NORMAL");
        options.put("liveness_control", "LOW");
        options.put("max_user_num", "1");
        JSONObject res = client.search(imgStr, imageType, groupIdList, options);
        return res.toString(2);
    }

    private static byte[] FileToByte(File file) throws IOException {
        // 将数据转为流
        InputStream content = new FileInputStream(file);
        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
        byte[] buff = new byte[100];
        int rc = 0;
        while ((rc = content.read(buff, 0, 100)) > 0) {
            swapStream.write(buff, 0, rc);
        }
        // 获得二进制数组
        return swapStream.toByteArray();
    }
}

演算結果

 

おすすめ

転載: blog.csdn.net/Kangyucheng/article/details/105883249