Object Detection utilizing Azure Cognitive Service and .NET

On this article, we’ll illustrate the combination of Azure Pc Imaginative and prescient API right into a .NET Core software. Our focus can be on creating an clever picture classifier that may precisely determine and label objects inside photos, leveraging the capabilities of Microsoft’s Cognitive Companies inside the .NET Core framework.

Use Instances and Purposes

  1. Meals: Optimized for pictures of dishes as you’d see them on a restaurant menu.
  2. Landmarks: Optimized for recognizable landmarks, each pure and synthetic.
  3. Retail: Automate stock administration or self-checkout programs by swiftly figuring out merchandise on retailer cabinets.
  4. Agriculture: Improve crop administration practices by monitoring plant well being and swiftly figuring out indicators of illness or pest infestation.
  5. Automotive: Enhance manufacturing requirements by promptly detecting defects or irregularities in-vehicle parts throughout manufacturing.
  6. Manufacturing: Optimize manufacturing line effectivity by automating the sorting of things based mostly on their visible attributes.
  7. Banking and Finance: Expedite monetary transactions by automating the extraction and interpretation of knowledge from checks.

Setting Up Azure Cognitive Companies

Step one is to create an Azure Cognitive Companies useful resource.

  1. Register for an Azure account if you happen to haven’t already by signing up without cost right here.
  2. Entry the Azure portal and set up a brand new Azure Pc Imaginative and prescient useful resource.
    Azure Computer Vision 
  3. After the useful resource is ready, make an observation of Key 1 and the Endpoint from the ‘Keys and Endpoint&rsquo tab of the useful resource.

Integrating Azure Speech service with .NET

Create an ASP.NET Core Net App mission in Visual Studio, after which set up these NuGet packages.

  • Microsoft.Azure.CognitiveServices.Imaginative and prescient.ComputerVision
  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.Json
  • System.Drawing.Frequent

Add your key and endpoint to the appsettings.json file.

    "ComputerVision": {
        "Endpoint": "Your_Computer_Vision_Endpoint",
        "SubscriptionKey": "Your_Computer_Visions_Key"

Pattern Code Snippet of Add methodology

public async Job<IActionResult> Add(IFormFile imageFile)
    if (imageFile != null && imageFile.Size > 0)
            utilizing (var ms = new MemoryStream())
                await imageFile.CopyToAsync(ms);
                ms.Search(0, SeekOrigin.Start);
                var detectObjectsResults = await _computerVision.DetectObjectsInStreamAsync(ms);
                ViewBag.Outcomes = detectObjectsResults.Objects;

                var processedImage = DrawRectanglesOnImage(ms.ToArray(), detectObjectsResults.Objects);
                ViewBag.ProcessedImage = Convert.ToBase64String(processedImage);

        catch (Exception ex)
            return RedirectToAction("Error", "Residence", new { errorMessage = ex.Message });
    return View("Index");

 non-public byte[] DrawRectanglesOnImage(byte[] imageBytes, IList<DetectedObject> objects)
     // Load the picture from byte array
     utilizing (var ms = new MemoryStream(imageBytes))
         utilizing (var originalImage = Picture.FromStream(ms))
             utilizing (var graphics = Graphics.FromImage(originalImage))
                 foreach (var objectInfo in objects)
                     var rect = new Rectangle(objectInfo.Rectangle.X, objectInfo.Rectangle.Y, objectInfo.Rectangle.W,
                     graphics.DrawRectangle(new Pen(Shade.Pink, 3), rect);

                     // Draw the item's title
                     utilizing var font = new Font("Arial", 16);
                     utilizing var brush = new SolidBrush(Shade.Pink);

                     graphics.DrawString(objectInfo.ObjectProperty, font, brush, objectInfo.Rectangle.X,
                                         objectInfo.Rectangle.Y - 20);

             utilizing (var memoryStream = new MemoryStream())
                 originalImage.Save(memoryStream, ImageFormat.Jpeg);
                 return memoryStream.ToArray();
  • The Add methodology accepts an IFormFile parameter representing the uploaded picture file.
  • If the file is legitimate, it copies the file’s content material right into a reminiscence stream after which invokes the Pc Imaginative and prescient service to detect objects inside the picture.
  • Detected objects are then processed to attract rectangles round them on the picture and label them with their names.
  • The DrawRectanglesOnImage methodology takes the byte array illustration of the picture and the checklist of detected objects.
  • It attracts rectangles round detected objects on the picture and labels them with their names.
  • Lastly, it converts the modified picture again to a byte array and returns it.


  1. Constructed and launched the appliance.
  2. Add a picture by clicking the “Add Picture” button and choosing a file out of your gadget.
  3. As soon as the picture is uploaded, click on the “Add” button.
  4. If the picture processing is profitable, an annotated model of the picture can be displayed beneath the add kind, exhibiting detected objects with rectangles and labels.
  5. Moreover, an inventory of detected objects and their confidence ranges can be displayed beneath the annotated picture.

Be aware. Be certain that the uploaded picture is in a format supported by the appliance.

The appliance will solely course of photos which might be legitimate and comprise detectable objects.

Process images


Objects detected and annotated with Azure Pc Imaginative and prescient

The supply code is offered on the next repository:


Thanks for studying. Please let me know your questions, ideas, or suggestions within the feedback part. I recognize your suggestions and encouragement.

Pleased Documenting!

Know extra about our firm at Skrots. Know extra about our companies at Skrots Companies, Additionally checkout all different blogs at Weblog at Skrots

Show More

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button