顔認識は、人工知能の開発の下での生活の中で最も一般的なアプリケーションの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();
}
}
演算結果