Ejemplo n.º 1
0
        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);
 }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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;
                }
            }
        }