ImageEstimatorsCatalog.ResizeImages Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellen Sie einen ImageResizingEstimator, der die Größe des Bilds von der in angegebenen Spalte in inputColumnName
eine neue Spalte ändert: outputColumnName
.
public static Microsoft.ML.Transforms.Image.ImageResizingEstimator ResizeImages (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, int imageWidth, int imageHeight, string inputColumnName = default, Microsoft.ML.Transforms.Image.ImageResizingEstimator.ResizingKind resizing = Microsoft.ML.Transforms.Image.ImageResizingEstimator+ResizingKind.IsoCrop, Microsoft.ML.Transforms.Image.ImageResizingEstimator.Anchor cropAnchor = Microsoft.ML.Transforms.Image.ImageResizingEstimator+Anchor.Center);
static member ResizeImages : Microsoft.ML.TransformsCatalog * string * int * int * string * Microsoft.ML.Transforms.Image.ImageResizingEstimator.ResizingKind * Microsoft.ML.Transforms.Image.ImageResizingEstimator.Anchor -> Microsoft.ML.Transforms.Image.ImageResizingEstimator
<Extension()>
Public Function ResizeImages (catalog As TransformsCatalog, outputColumnName As String, imageWidth As Integer, imageHeight As Integer, Optional inputColumnName As String = Nothing, Optional resizing As ImageResizingEstimator.ResizingKind = Microsoft.ML.Transforms.Image.ImageResizingEstimator+ResizingKind.IsoCrop, Optional cropAnchor As ImageResizingEstimator.Anchor = Microsoft.ML.Transforms.Image.ImageResizingEstimator+Anchor.Center) As ImageResizingEstimator
Parameter
- catalog
- TransformsCatalog
Der Katalog der Transformation.
- outputColumnName
- String
Der Name der Spalte, die sich aus der Transformation von inputColumnName
ergibt.
Der Datentyp dieser Spalte entspricht dem Datentyp der Eingabespalte.
- imageWidth
- Int32
Die breite des transformierten Bilds.
- imageHeight
- Int32
Die transformierte Bildhöhe.
- resizing
- ImageResizingEstimator.ResizingKind
Der Typ der Bildgröße, wie in ImageResizingEstimator.ResizingKindangegeben.
- cropAnchor
- ImageResizingEstimator.Anchor
Wo der Anker platziert werden soll, um mit dem Zuschneiden zu beginnen. In definierte Optionen ImageResizingEstimator.Anchor
Gibt zurück
Beispiele
using System;
using System.IO;
using Microsoft.ML;
using Microsoft.ML.Data;
namespace Samples.Dynamic
{
public static class ResizeImages
{
// Example on how to load the images from the file system, and resize them.
public static void Example()
{
// Create a new ML context, for ML.NET operations. It can be used for
// exception tracking and logging, as well as the source of randomness.
var mlContext = new MLContext();
// Downloading a few images, and an images.tsv file, which contains a
// list of the files from the dotnet/machinelearning/test/data/images/.
// If you inspect the fileSystem, after running this line, an "images"
// folder will be created, containing 4 images, and a .tsv file
// enumerating the images.
var imagesDataFile = Microsoft.ML.SamplesUtils.DatasetUtils
.GetSampleImages();
// Preview of the content of the images.tsv file
//
// imagePath imageType
// tomato.bmp tomato
// banana.jpg banana
// hotdog.jpg hotdog
// tomato.jpg tomato
var data = mlContext.Data.CreateTextLoader(new TextLoader.Options()
{
Columns = new[]
{
new TextLoader.Column("ImagePath", DataKind.String, 0),
new TextLoader.Column("Name", DataKind.String, 1),
}
}).Load(imagesDataFile);
var imagesFolder = Path.GetDirectoryName(imagesDataFile);
// Image loading pipeline.
var pipeline = mlContext.Transforms.LoadImages("ImageObject",
imagesFolder, "ImagePath")
.Append(mlContext.Transforms.ResizeImages("ImageObjectResized",
inputColumnName: "ImageObject", imageWidth: 100, imageHeight: 100));
var transformedData = pipeline.Fit(data).Transform(data);
// The transformedData IDataView contains the resized images now.
// Preview the transformedData.
PrintColumns(transformedData);
// ImagePath Name ImageObject ImageObjectResized
// tomato.bmp tomato {Width=800, Height=534} {Width=100, Height=100}
// banana.jpg banana {Width=800, Height=288} {Width=100, Height=100}
// hotdog.jpg hotdog {Width=800, Height=391} {Width=100, Height=100}
// tomato.jpg tomato {Width=800, Height=534} {Width=100, Height=100}
}
private static void PrintColumns(IDataView transformedData)
{
Console.WriteLine("{0, -25} {1, -25} {2, -25} {3, -25}", "ImagePath",
"Name", "ImageObject", "ImageObjectResized");
using (var cursor = transformedData.GetRowCursor(transformedData
.Schema))
{
// Note that it is best to get the getters and values *before*
// iteration, so as to facilitate buffer sharing (if applicable), and
// column -type validation once, rather than many times.
ReadOnlyMemory<char> imagePath = default;
ReadOnlyMemory<char> name = default;
MLImage imageObject = null;
MLImage resizedImageObject = null;
var imagePathGetter = cursor.GetGetter<ReadOnlyMemory<char>>(cursor
.Schema["ImagePath"]);
var nameGetter = cursor.GetGetter<ReadOnlyMemory<char>>(cursor
.Schema["Name"]);
var imageObjectGetter = cursor.GetGetter<MLImage>(cursor.Schema[
"ImageObject"]);
var resizedImageGetter = cursor.GetGetter<MLImage>(cursor.Schema[
"ImageObjectResized"]);
while (cursor.MoveNext())
{
imagePathGetter(ref imagePath);
nameGetter(ref name);
imageObjectGetter(ref imageObject);
resizedImageGetter(ref resizedImageObject);
Console.WriteLine("{0, -25} {1, -25} {2, -25} {3, -25}",
imagePath, name,
$"Width={imageObject.Width}, Height={imageObject.Height}",
$"Width={resizedImageObject.Width}, Height={resizedImageObject.Height}");
}
// Dispose the image.
imageObject.Dispose();
resizedImageObject.Dispose();
}
}
}
}