このトピックでは、Java SDKを使用して人物の顔を削除する方法について説明します。
使用上の注意
顔を削除する場合は、削除する顔のIDと対応する人物IDを指定する必要があります。パラメーターの詳細については、「顔削除のAPI操作」をご参照ください。
SDKを呼び出すには、コンテンツモデレーションAPIのエンドポイントを使用する必要があります。 APIエンドポイントの詳細については、「エンドポイント」をご参照ください。
使用上の注意
顔を削除する場合は、削除する顔のIDと対応する人物IDを指定する必要があります。パラメーターの詳細については、「顔削除のAPI操作」をご参照ください。
前提条件
Javaの依存関係がインストールされていること。詳細については、「インストール」をご参照ください。
説明依存関係をインストールするには、「インストール」トピックに記載されているJavaバージョンを使用する必要があります。そうでない場合、後続の操作呼び出しは失敗します。
ローカル画像またはバイナリ画像ストリームを画像モデレーションに送信する場合は、Extension.Uploaderユーティリティクラスをダウンロードしてプロジェクトにインポートする必要があります。
顔削除のサンプルコード
import java.util.Arrays;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.green.model.v20180509.DeleteFacesRequest;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
public class FaceDeleteFaceRequestSample {
public static void main(String[] args) throws Exception {
/**
* Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。セキュリティリスクを回避するために、RAMユーザーを使用してAPI操作を呼び出したり、日常のO&Mを実行することをお勧めします。
* 環境変数を取得する一般的な方法:
* 方法 1:
* RAMユーザーのAccessKey IDを取得します:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* RAMユーザーのAccessKeyシークレットを取得します:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
* 方法 2:
* RAMユーザーのAccessKey IDを取得します:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
* RAMユーザーのAccessKeyシークレットを取得します:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
DefaultProfile profile = DefaultProfile.getProfile(
"cn-shanghai",
"環境変数からRAMユーザーのAccessKey IDを取得することをお勧めします",
"環境変数からRAMユーザーのAccessKeyシークレットを取得することをお勧めします");
DefaultProfile.addEndpoint("cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
// 注:インスタンス化されたクライアントはできるだけ再利用することをお勧めします。これにより、モデレーションのパフォーマンスが向上し、クライアントの接続が繰り返されるのを回避できます。
IAcsClient client = new DefaultAcsClient(profile);
DeleteFacesRequest deleteFacesRequest = new DeleteFacesRequest();
deleteFacesRequest.setAcceptFormat(FormatType.JSON); // APIレスポンス形式を指定します。
deleteFacesRequest.setMethod(com.aliyuncs.http.MethodType.POST); // リクエストメソッドを指定します。
deleteFacesRequest.setEncoding("utf-8");
JSONObject data = new JSONObject();
/**
* personId:カスタム人物のID。このパラメーターは必須です。
* faceIds:追加される顔のID。
*/
data.put("personId", "personId_test_3");
data.put("faceIds", Arrays.asList("31820666292926465"));
deleteFacesRequest.setHttpContent(data.toJSONString().getBytes("UTF-8"), "UTF-8", FormatType.JSON);
/**
* 接続タイムアウト期間と読み取りタイムアウト期間を指定します。
*/
deleteFacesRequest.setConnectTimeout(3000);
deleteFacesRequest.setReadTimeout(6000);
try {
HttpResponse httpResponse = client.doAction(deleteFacesRequest);
if (httpResponse.isSuccess()) {
JSONObject scrResponse = JSON.parseObject(new String(httpResponse.getHttpContent(), "UTF-8"));
System.out.println(JSON.toJSONString(scrResponse, true));
if (200 == scrResponse.getInteger("code")) {
JSONObject resultObject = scrResponse.getJSONObject("data");
if (200 == resultObject.getInteger("code")) {
System.out.println(resultObject.getString("personId"));
} else {
System.out.println("task process fail:" + resultObject.getInteger("code"));
}
} else {
System.out.println("detect not success. code:" + scrResponse.getInteger("code"));
}
} else {
System.out.println("response not success. status:" + httpResponse.getStatus());
}
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}