PTI.Microservices.Library.AzureCustomVision
                               
                            
                                7.0.0
                            
                        
                    dotnet add package PTI.Microservices.Library.AzureCustomVision --version 7.0.0
NuGet\Install-Package PTI.Microservices.Library.AzureCustomVision -Version 7.0.0
        
        
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
                    
    
    <PackageReference Include="PTI.Microservices.Library.AzureCustomVision" Version="7.0.0" />
        
        
For projects that support PackageReference, copy this XML node into the project file to reference the package.
                    
    
    <PackageVersion Include="PTI.Microservices.Library.AzureCustomVision" Version="7.0.0" />
<PackageReference Include="PTI.Microservices.Library.AzureCustomVision" />
        
        
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
                    
    
    paket add PTI.Microservices.Library.AzureCustomVision --version 7.0.0
        
        
 The NuGet Team does not provide support for this client. Please contact its maintainers for support.
                    
    
    #r "nuget: PTI.Microservices.Library.AzureCustomVision, 7.0.0"
        
        
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
                    
    
    #:package PTI.Microservices.Library.AzureCustomVision@7.0.0
        
        
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
                    
    
    #addin nuget:?package=PTI.Microservices.Library.AzureCustomVision&version=7.0.0
#tool nuget:?package=PTI.Microservices.Library.AzureCustomVision&version=7.0.0
        
        
 The NuGet Team does not provide support for this client. Please contact its maintainers for support.
                    
    
    PTI.Microservices.Library.AzureCustomVision
Facilitates the consumption of the APIs in Azure Custom Vision
Examples:
Note: The examples below are passing null for the logger, if you want to use the logger make sure to pass the parameter with a value other than null
Analyze Image
string iterationCode = ITERATION_CODE;
Guid projectId = Guid.Parse(PROJECT_ID);
Guid imageId = Guid.Parse(IMAGE_ID);
AzureCustomVisionService azureCustomVisionService = CreateCustomVisionClient();
var originalImageBytes = new HttpClient()
    .GetByteArrayAsync(IMAGE_URL)
    .Result;
MemoryStream originalImageStream = new MemoryStream(originalImageBytes);
Stream sstr = File.Open(IMAGE_FILE_PATH, FileMode.Open);
var predictionResult = await azureCustomVisionService.DetectImageAsync(sstr,
    projectId, iterationCode);
Assert.IsNotNull(predictionResult);
//cropping seems to be working, but prediction has a higher probability for incorrect section,
//custom vision projects needs more training.
var ingredientsRegions = predictionResult.Predictions.Where(p => p.TagName == "Ingredients")
    .Where(p=>p.Probability > 0.5)
    .OrderByDescending(p => p.Probability).ToArray();
ImagesService imagesService = new ImagesService(null);
for (int i=0; i < ingredientsRegions.Count(); i++)
{
    var ingredientsRegion = ingredientsRegions[i];
    originalImageStream = new MemoryStream(originalImageBytes);
    System.Drawing.Image img = System.Drawing.Image.FromStream(originalImageStream);
    originalImageStream = new MemoryStream(originalImageBytes);
    var croppedImage = imagesService.Crop(originalImageStream,
        (float)ingredientsRegion.BoundingBox.Width * img.Width,
        (float)ingredientsRegion.BoundingBox.Height * img.Height,
        (float)ingredientsRegion.BoundingBox.Left * img.Width,
        (float)ingredientsRegion.BoundingBox.Top * img.Height);
    System.IO.File.WriteAllBytes($@"C:\Temp\PredictedImage_{i}.png", croppedImage);
}
Create Image From Regions
Guid projectId = Guid.Parse(PROJECT_ID);
Guid imageId = Guid.Parse(IMAGE_ID);
AzureCustomVisionService azureCustomVisionService = CreateCustomVisionClient();
var images = await azureCustomVisionService.CreateImageFromRegionsAsync(projectId, imageId, "Ingredients");
Assert.IsTrue(images.Count() > 0);
for (int i = 0; i < images.Count(); i++)
{
    System.IO.File.WriteAllBytes($@"C:\Temp\{i}.png", images[i].ToArray());
}
Query Predictions
Guid projectId = Guid.Parse(PROJECT_ID);
AzureCustomVisionService azureCustomVisionService = CreateCustomVisionClient();
var results = await azureCustomVisionService.QueryPredictionsAsync(projectId);
var imageUrl = results.Results.First().OriginalImageUri;
var imageBytes = new HttpClient().GetByteArrayAsync(imageUrl).Result;
System.IO.File.WriteAllBytes(@"C:\TestResultImage.png", imageBytes);
Basic Import/Upload Flow
AzureCustomVisionService azureCustomVisionService = CreateCustomVisionClient();
var firstDomain = (await azureCustomVisionService.GetDomainsAsync()).First();
string projectName = "Automated Tests Project";
var existentProject = await azureCustomVisionService.GetProjectByNameAsync(projectName);
if (existentProject != null)
    await azureCustomVisionService.DeleteProjectAsync(existentProject.Id);
var project = await azureCustomVisionService.CreateProjectAsync(projectName, "Created from PTI Microservices library Automated Tests",
    firstDomain.Id, AzureCustomVisionService.ClassificationType.Multiclass);
Assert.IsNotNull(project);
System.Collections.Generic.List<Uri> lstUris = new List<Uri>()
{
    new Uri(this.TestComputerVisionImageUri),
    new Uri(this.TestFaceImageUrl)
};
var uploadImagesResult = await azureCustomVisionService.UploadImagesAsync(lstUris,
    project.Id);
List<string> testTags = new List<string>()
{
    "Cat0","Cat1","Cat2"
};
foreach (var singleImage in uploadImagesResult)
{
    var createImageTagsResult = await azureCustomVisionService
        .CreateImageTagsAsync(project.Id, singleImage.Image.Id, testTags, addTagsToSuggestedRegions: true);
    await Task.Delay(TimeSpan.FromSeconds(5));
}
try
{
    var trainingResult = await azureCustomVisionService.TrainProjectAsync(project.Id);
}
catch (Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training.Models.CustomVisionErrorException ex)
{
    //expected exception since we are not sending enough images tagged
}
| Product | Versions Compatible and additional computed target framework versions. | 
|---|---|
| .NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. | 
        
        Compatible target framework(s)
    
    
        
        Included target framework(s) (in package)
    
    Learn more about Target Frameworks and .NET Standard.
- 
                                                    net7.0- Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction (>= 2.0.0)
- Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training (>= 2.0.0)
- PTI.Microservices.Library.Core (>= 7.0.0)
- PTI.Microservices.Library.Images (>= 7.0.0)
 
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | 
|---|---|---|
| 7.0.0 | 518 | 11/13/2022 | 
| 2.0.0-preview | 340 | 7/9/2021 |