この Topic では、.NET SDK を使用して、パブリック URL から取得したイメージ内の顔属性を検出する方法について説明します。この機能はイメージのみをサポートします。
機能
顔属性検出は、イメージ内の顔のさまざまなプロパティ (ぼかし、角度、位置、笑顔の強さ、髪型、メガネ、マスク、帽子、ひげ、前髪の有無など) を識別します。パラメーターの詳細については、「顔属性検出 API リファレンス」をご参照ください。
説明
この SDK はイメージ URL のみをサポートします。ローカルファイルやバイナリデータはサポートしていません。
サポートされている URL タイプは、長さが 2,048 文字までのインターネット HTTP または HTTPS URL です。
前提条件
.NET 依存関係をインストールする必要があります。手順については、「.NET 依存関係のインストール」をご参照ください。
説明
依存関係をインストールするには、「インストール」の Topic で説明されている必要な .NET バージョンを使用する必要があります。そうしないと、後続の操作の呼び出しが失敗します。
顔属性検出タスクの送信
using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20180509;
using System.Collections.Generic;
namespace csharp_sdk_sample
{
class Program
{
static void Main(string[] args)
{
/**
* 環境変数を取得する一般的な方法:
* RAM ユーザーの AccessKey ID を取得する: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
* RAM ユーザーの AccessKey Secret を取得する: Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
"環境変数から RAM ユーザーの AccessKey ID を取得",
"環境変数から RAM ユーザーの AccessKey Secret を取得");
// 注:インスタンス化されたクライアントを再利用することで、検出パフォーマンスが向上し、接続の重複作成を回避できます。
DefaultAcsClient client = new DefaultAcsClient(profile);
DetectFaceRequest request = new DetectFaceRequest();
request.AcceptFormat = FormatType.JSON;
request.ContentType = FormatType.JSON;
request.Method = MethodType.POST;
request.Encoding = "UTF-8";
Dictionary<string, object> httpBody = new Dictionary<string, object>();
httpBody.Add("url", "検出したい顔イメージの URL");
request.SetContent(System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(httpBody)), "utf-8", FormatType.JSON);
try
{
DetectFaceResponse response = client.GetAcsResponse(request);
if (response.HttpResponse.Status != 200)
{
Console.WriteLine("リクエストが失敗しました。ステータス:{0}", response.HttpResponse.Status);
}
Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
}
catch (Exception ex)
{
Console.WriteLine("失敗しました。エラー情報: {0}", ex.Message);
}
}
}
}