Alibaba Cloud OpenAPI Explorer は、API ドキュメント、API デバッグ、および SDK の例を提供し、API の使用開始を支援します。このトピックでは、C# 用 Intelligent Media Management (IMM) SDK をインストールして使用する方法について説明します。
前提条件
AccessKey ペアが作成され、取得されています。詳細については、「AccessKey ペアを作成する」をご参照ください。
OSS がアクティブ化され、バケットが作成され、オブジェクトがバケットにアップロードされています。詳細については、「オブジェクトをアップロードする」をご参照ください。
IMM がアクティブ化されています。詳細については、「IMM をアクティブ化する」をご参照ください。
IMM コンソールでプロジェクトが作成されています。 IMM コンソールを使用してプロジェクトを作成する方法の詳細については、「プロジェクトを作成する」をご参照ください。
説明CreateProject オペレーションを呼び出して、プロジェクトを作成することもできます。詳細については、「CreateProject」をご参照ください。
ListProjects オペレーションを呼び出して、特定のリージョンにある既存のプロジェクトをクエリできます。詳細については、「ListProjects」をご参照ください。
C# 用 IMM SDK をインストールする
IMM API V2020-09-30 を使用するには、IMM SDK V2020-09-30 を使用する必要があります。
C# 用 IMM SDK の使用方法の詳細については、「クイックスタート」をご参照ください。
認証情報
次の種類のアクセス認証情報がサポートされています。
一時的なアクセス認証情報: IMM への一時的なアクセス権限の付与など、セキュリティが高いことが重要なシナリオでは、一時的なアクセス認証情報を使用することをお勧めします。一時的なアクセス認証情報は、特定の期間内のみ有効であるため、認証情報の漏洩を防ぐのに役立ちます。一時的なアクセス認証情報は、きめ細かいアクセス制御をサポートしており、過剰な権限によるセキュリティリスクを防ぎます。
長期アクセス認証情報: セキュリティを確保するために、長期アクセス認証情報を使用しないことをお勧めします。利便性が必要なシナリオの場合、長期アクセス認証情報を使用すると、長期間にわたって複数回更新する必要がなくなります。アカウントのセキュリティを確保するために、3 か月ごとに長期アクセス認証情報を変更することをお勧めします。長期アクセス認証情報が漏洩した場合、または使用されなくなった場合は、セキュリティリスクを軽減するために、できるだけ早く長期アクセス認証情報を削除または無効にする必要があります。
一時的なアクセス認証情報を使用する
C# 用 IMM SDK を使用して IMM への一時的なアクセスのアクセス認証情報を設定する方法の詳細については、「環境変数を設定して一時的なアクセス認証情報を保存する」をご参照ください。
次の例では、C# 用 IMM SDK で一時的なアクセス認証情報を使用して API オペレーションを呼び出し、中国 (杭州) リージョンの画像内の顔と顔情報を検出する方法について説明します。
次のサンプルコードを使用する場合は、IMM エンドポイントを IMM プロジェクトが存在するリージョンのエンドポイントに置き換えてください。 IMM プロジェクトと OSS オブジェクトが同じリージョンに存在することを確認してください。
Program.csファイルを編集します。次の例では、C# 用 IMM SDK を使用して中国 (杭州) リージョンの画像内の顔と顔情報を検出する方法について説明します。// このファイルは自動生成されています。編集しないでください。 using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using Newtonsoft.Json; using Tea; using Tea.Utils; using Aliyun.Credentials.Models; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。 * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Imm20200930.Client CreateClient() { // デフォルトの認証情報を使用して Credentials クライアントを初期化します。 Aliyun.Credentials.Models.Config credentialsConfig = new Aliyun.Credentials.Models.Config() { // 認証情報のタイプ。 Type = "sts", // <ALIBABA_CLOUD_ACCESS_KEY_ID> をレスポンスから取得した一時的な AccessKey ID に置き換えます。 AccessKeyId = "<ALIBABA_CLOUD_ACCESS_KEY_ID>", // <ALIBABA_CLOUD_ACCESS_KEY_SECRET> をレスポンスから取得した一時的な AccessKey シークレットに置き換えます。 AccessKeySecret = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>", // <ALIBABA_CLOUD_SECURITY_TOKEN> をレスポンスから取得した STS トークンに置き換えます。 SecurityToken = "<ALIBABA_CLOUD_SECURITY_TOKEN>" }; Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(credentialsConfig); AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config() { Credential = credentialClient, // IMM のエンドポイントを指定します。 Endpoint = "imm.cn-beijing.aliyuncs.com" }; return new AlibabaCloud.SDK.Imm20200930.Client(config); } public static void Main(string[] args) { // ECS SDK クライアントを初期化します。 AlibabaCloud.SDK.Imm20200930.Client client = CreateClient(); AlibabaCloud.SDK.Imm20200930.Models.DetectImageFacesRequest detectImageFacesRequest = new AlibabaCloud.SDK.Imm20200930.Models.DetectImageFacesRequest { ProjectName = "test", SourceURI = "oss://your-bucket-name/your-path/your-image.jpg", }; AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); try { // サンプルコードをコピーして実行した後、操作の戻り値を取得します。 Console.WriteLine(JsonConvert.SerializeObject(client.DetectImageFacesWithOptions(detectImageFacesRequest, runtime).Body)); } catch (TeaException error) { // 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。 // エラーメッセージを返します。 Console.WriteLine(error.Message); // 対応するエラー診断ページの URL。 Console.WriteLine(error.Data["Recommend"]); AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。 // エラーメッセージを返します。 Console.WriteLine(error.Message); // 対応するエラー診断ページの URL。 Console.WriteLine(error.Data["Recommend"]); AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } } } }csc /out:D:\Program.cs D:\Program.exeコマンドを実行して、ソースファイルをコンパイルします。 Program.exe を実行すると、次のサンプル出力が返されます。{ "RequestId": "2CCA6D7E-C9FB-5C87-8AC5-D6E6AC493096", "Faces": [ { "Beard": "none", "MaskConfidence": 0.83, "Gender": "female", "Boundary": { "Left": 81, "Top": 62, "Height": 127, "Width": 96 }, "BeardConfidence": 1, "FigureId": "0fccc5f9-22df-4507-ac53-f6a37f11a15a", "Mouth": "open", "Emotion": "happiness", "Age": 25, "MouthConfidence": 0.998, "FigureType": "face", "GenderConfidence": 1, "HeadPose": { "Pitch": -27.196, "Roll": 6.075, "Yaw": 3.477 }, "Mask": "none", "EmotionConfidence": 0.999, "HatConfidence": 1, "GlassesConfidence": 1, "Sharpness": 1, "FigureClusterId": "figure-cluster-id-unavailable", "FaceQuality": 0.998, "Attractive": 0.998, "AgeSD": 7, "Glasses": "none", "FigureConfidence": 0.999, "Hat": "none" } ] }
長期アクセス認証情報を使用する
次の例では、C# 用 IMM SDK で長期アクセス認証情報を使用して API オペレーションを呼び出し、中国 (杭州) リージョンの画像内の顔と顔情報を検出する方法について説明します。
Program.csファイルを編集します。次の例では、C# 用 IMM SDK を使用して中国 (杭州) リージョンの画像内の顔と顔情報を検出する方法について説明します。// このファイルは自動生成されています。編集しないでください。 using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using Newtonsoft.Json; using Tea; using Tea.Utils; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。 * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Imm20200930.Client CreateClient() { // プロジェクトコードが漏洩した場合、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。次のサンプルコードは参照用にのみ提供されています。 // セキュリティトークンサービス (STS) 認証を使用することをお勧めします。STS 認証はより高いセキュリティを提供します。認証方法の詳細については、https://www.alibabacloud.com/help/ja/sdk/developer-reference/v2-manage-net-access-credentials?spm=a2c63.l28256.help-menu-262060.d_1_8_1_2.30be1b76RW6PpC を参照してください。 AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { // 必須。コードランタイム環境で次の環境変数が設定されていることを確認します: ALIBABA_CLOUD_ACCESS_KEY_ID。 AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"), // 必須。コードランタイム環境で次の環境変数が設定されていることを確認します: ALIBABA_CLOUD_ACCESS_KEY_SECRET。 AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), }; // サポートされているリージョンの IMM エンドポイントのリストについては、https://api.aliyun.com/product/imm を参照してください。 config.Endpoint = "imm.cn-beijing.aliyuncs.com"; return new AlibabaCloud.SDK.Imm20200930.Client(config); } public static void Main(string[] args) { AlibabaCloud.SDK.Imm20200930.Client client = CreateClient(); AlibabaCloud.SDK.Imm20200930.Models.DetectImageFacesRequest detectImageFacesRequest = new AlibabaCloud.SDK.Imm20200930.Models.DetectImageFacesRequest { ProjectName = "test", SourceURI = "oss://your-bucket-name/your-path/your-image.jpg", }; AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); try { // サンプルコードをコピーして実行した後、操作の戻り値を取得します。 Console.WriteLine(JsonConvert.SerializeObject(client.DetectImageFacesWithOptions(detectImageFacesRequest, runtime).Body)); } catch (TeaException error) { // 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。 // エラーメッセージを返します。 Console.WriteLine(error.Message); // 対応するエラー診断ページの URL。 Console.WriteLine(error.Data["Recommend"]); AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ表示されます。 // エラーメッセージを返します。 Console.WriteLine(error.Message); // 対応するエラー診断ページの URL。 Console.WriteLine(error.Data["Recommend"]); AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); } } } }csc /out:D:\Program.cs D:\Program.exeコマンドを実行して、ソースファイルをコンパイルします。 Program.exe を実行すると、次のサンプル出力が返されます。{ "RequestId": "2CCA6D7E-C9FB-5C87-8AC5-D6E6AC493096", "Faces": [ { "Beard": "none", "MaskConfidence": 0.83, "Gender": "female", "Boundary": { "Left": 81, "Top": 62, "Height": 127, "Width": 96 }, "BeardConfidence": 1, "FigureId": "0fccc5f9-22df-4507-ac53-f6a37f11a15a", "Mouth": "open", "Emotion": "happiness", "Age": 25, "MouthConfidence": 0.998, "FigureType": "face", "GenderConfidence": 1, "HeadPose": { "Pitch": -27.196, "Roll": 6.075, "Yaw": 3.477 }, "Mask": "none", "EmotionConfidence": 0.999, "HatConfidence": 1, "GlassesConfidence": 1, "Sharpness": 1, "FigureClusterId": "figure-cluster-id-unavailable", "FaceQuality": 0.998, "Attractive": 0.998, "AgeSD": 7, "Glasses": "none", "FigureConfidence": 0.999, "Hat": "none" } ] }