ImageEstimatorsCatalog.ResizeImages Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Crie um ImageResizingEstimator, que redimensione a imagem da coluna especificada em inputColumnName
para uma nova coluna: 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
Parâmetros
- catalog
- TransformsCatalog
O catálogo da transformação.
- outputColumnName
- String
Nome da coluna resultante da transformação de inputColumnName
.
O tipo de dados dessa coluna será o mesmo da coluna de entrada.
- imageWidth
- Int32
A largura da imagem transformada.
- imageHeight
- Int32
A altura da imagem transformada.
- resizing
- ImageResizingEstimator.ResizingKind
O tipo de redimensionamento de imagem conforme especificado em ImageResizingEstimator.ResizingKind.
- cropAnchor
- ImageResizingEstimator.Anchor
Onde colocar a âncora para começar a cortar. Opções definidas em ImageResizingEstimator.Anchor
Retornos
Exemplos
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();
}
}
}
}