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.
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.
// Install PTI.Microservices.Library.AzureCustomVision as a Cake Addin #addin nuget:?package=PTI.Microservices.Library.AzureCustomVision&version=7.0.0 // Install PTI.Microservices.Library.AzureCustomVision as a Cake Tool #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. |
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 | 395 | 11/13/2022 |
2.0.0-preview | 219 | 7/9/2021 |