public static async Task Run( [BlobTrigger("raw-images/{name}", Connection = Constants.StoreConnectionName)] Stream myBlob, string name, [Queue("failure", Connection = Constants.StoreConnectionName)] CloudQueue failureQueue, [Queue("facesdetected", Connection = Constants.StoreConnectionName)] CloudQueue facesDetectedQueue, [Table("status", Connection = Constants.StoreConnectionName)] CloudTable statusTable, TraceWriter log ) { log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); var response = await CallFaceApiToDetectFaces(myBlob); if (response.StatusCode != HttpStatusCode.OK) { await AddMessageAsync(failureQueue, new Failure(name, response.StatusCode)); return; } string contentString = await response.Content.ReadAsStringAsync(); var faces = JsonConvert.DeserializeObject <Face[]>(contentString); var overallResult = new OverallResult(name, faces.Length, null); TableOperation insertOrMergeIdentificationResult = TableOperation.InsertOrReplace(overallResult); await statusTable.ExecuteAsync(insertOrMergeIdentificationResult); if (faces.Length > 0) { var detectFacesResult = new DetectFacesResult(name, faces.Select(x => x.FaceId).ToArray()); await AddMessageAsync(facesDetectedQueue, detectFacesResult); } }
private static async Task UpdateOverallStatus( CloudTable statusTable, DetectFacesResult facesResult, KnownFace[] knownFaces) { var overallResult = new OverallResult(facesResult.ImgId, facesResult.FaceIds.Length, knownFaces.Length); TableOperation insertOrMergeIdentificationResult = TableOperation.InsertOrReplace(overallResult); await statusTable.ExecuteAsync(insertOrMergeIdentificationResult); }
public void DetectFacesImageStream() { DetectFacesResult result = null; using (Stream stream = new FileStream(this.testImageContent, FileMode.Open, FileAccess.Read)) { var moderate = this.client.DetectFacesImageAsync(stream, this.isCache); result = moderate.Result; } Assert.IsNotNull(result); Assert.IsTrue(result.Count > 0, "Face count is less than 1, Response: {0}", JsonConvert.SerializeObject(result)); Assert.IsNotNull(result.Faces, "No Faces detected, Response: {0}", JsonConvert.SerializeObject(result)); }
public void DetectFacesImageCache() { DetectFacesResult result = null; result = this.DetectFacesImage(); Assert.IsNotNull(result.CacheID); if (!string.IsNullOrWhiteSpace(result.CacheID)) { var moderate = this.client.DetectFacesImageAsync(result.CacheID, DataRepresentationType.Cacheid, this.isCache); result = moderate.Result; } Assert.IsNotNull(result); Assert.IsTrue(result.Count > 0, "Face count is less than 1, Response: {0}", JsonConvert.SerializeObject(result)); Assert.IsNotNull(result.Faces, "No Faces detected, Response: {0}", JsonConvert.SerializeObject(result)); }
public async Task DetectFacesTestDataBasedAsync() { string type = this.TestContext.DataRow["DataType"].ToString(); bool isEnabled = bool.Parse(this.TestContext.DataRow["Enabled"].ToString()); var expectSizeException = bool.Parse(this.TestContext.DataRow["SizeException"].ToString()); if (!isEnabled) { return; } DetectFacesResult result = null; try { switch (type) { case "url": { result = await this.client.DetectFacesImageAsync( this.TestContext.DataRow["DataVal"].ToString(), DataRepresentationType.Url, bool.Parse(this.TestContext.DataRow["Cache"].ToString())); break; } case "raw": { var webClient = new WebClient(); byte[] imageBytes = webClient.DownloadData(this.TestContext.DataRow["DataVal"].ToString()); result = await this.client.DetectFacesImageAsync( new MemoryStream(imageBytes), bool.Parse(this.TestContext.DataRow["Cache"].ToString())); break; } } if (expectSizeException) { Assert.Fail("Image Size Expection was expected!!"); } Assert.IsNotNull(result); if (bool.Parse(this.TestContext.DataRow["Cache"].ToString())) { Assert.IsTrue(!string.IsNullOrWhiteSpace(result.CacheID), "Expected CacheId, Response: {0}", JsonConvert.SerializeObject(result)); } else { Assert.IsTrue(string.IsNullOrWhiteSpace(result.CacheID), "CacheId NOT EXPECTED, Response: {0}", JsonConvert.SerializeObject(result)); } var expectedFaceCount = int.Parse(this.TestContext.DataRow["FaceCount"].ToString()); Assert.IsTrue(result.Count == expectedFaceCount, "Face count is less than 1, Response: {0}", JsonConvert.SerializeObject(result)); if (expectedFaceCount > 0) { Assert.IsNotNull( result.Faces, "No Faces detected, Response: {0}", JsonConvert.SerializeObject(result)); Assert.IsTrue( result.Faces.Length > 0, "No Faces detected, Response: {0}", JsonConvert.SerializeObject(result)); } else { Assert.IsTrue( result.Faces == null || result.Faces.Length == 0, "Faces array should be empty: {0}", JsonConvert.SerializeObject(result)); } } catch (Microsoft.CognitiveServices.ContentModerator.ClientException ex) { if ((ex.Error.Message != "Image Size Error") || !expectSizeException) { throw; } } }