ImageEstimatorsCatalog.ConvertToImage Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vytvořte obrázek VectorToImageConvertingEstimator, který vytvoří obrázek z dat ze sloupce zadaného do inputColumnName nového sloupce: outputColumnName.
public static Microsoft.ML.Transforms.Image.VectorToImageConvertingEstimator ConvertToImage(this Microsoft.ML.TransformsCatalog catalog, int imageHeight, int imageWidth, string outputColumnName, string inputColumnName = default, Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator.ColorBits colorsPresent = Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator+ColorBits.Rgb, Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator.ColorsOrder orderOfColors = Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator+ColorsOrder.ARGB, bool interleavedColors = false, float scaleImage = 1, float offsetImage = 0, int defaultAlpha = 255, int defaultRed = 0, int defaultGreen = 0, int defaultBlue = 0);
static member ConvertToImage : Microsoft.ML.TransformsCatalog * int * int * string * string * Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator.ColorBits * Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator.ColorsOrder * bool * single * single * int * int * int * int -> Microsoft.ML.Transforms.Image.VectorToImageConvertingEstimator
<Extension()>
Public Function ConvertToImage (catalog As TransformsCatalog, imageHeight As Integer, imageWidth As Integer, outputColumnName As String, Optional inputColumnName As String = Nothing, Optional colorsPresent As ImagePixelExtractingEstimator.ColorBits = Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator+ColorBits.Rgb, Optional orderOfColors As ImagePixelExtractingEstimator.ColorsOrder = Microsoft.ML.Transforms.Image.ImagePixelExtractingEstimator+ColorsOrder.ARGB, Optional interleavedColors As Boolean = false, Optional scaleImage As Single = 1, Optional offsetImage As Single = 0, Optional defaultAlpha As Integer = 255, Optional defaultRed As Integer = 0, Optional defaultGreen As Integer = 0, Optional defaultBlue As Integer = 0) As VectorToImageConvertingEstimator
Parametry
- catalog
- TransformsCatalog
Katalog transformace.
- imageHeight
- Int32
Výška výstupních obrázků.
- imageWidth
- Int32
Šířka výstupních obrázků.
- outputColumnName
- String
Název sloupce, který je výsledkem transformace inputColumnName.
Datový typ tohoto sloupce bude MLImage.
- inputColumnName
- String
Název sloupce s daty, která se mají převést na obrázek. Tento estimátor pracuje s vektorem známé velikosti Singlea DoubleByte.
- colorsPresent
- ImagePixelExtractingEstimator.ColorBits
Určuje, které ImagePixelExtractingEstimator.ColorBits jsou v současnosti vstupní pixelové vektory. Pořadí barev je zadáno v orderOfColors.
- orderOfColors
- ImagePixelExtractingEstimator.ColorsOrder
Pořadí, ve kterém jsou barvy prezentovány ve vstupním vektoru.
- interleavedColors
- Boolean
Zda jsou pixely prokládání, což znamená, zda jsou v orderOfColors pořadí, nebo oddělené v planární podobě: všechny hodnoty pro jednu barvu pro všechny pixely, pak všechny hodnoty pro jinou barvu atd.
- scaleImage
- Single
Hodnoty se před převodem na pixely škálují podle této hodnoty. Použije se na hodnotu vektoru před offsetImage.
- offsetImage
- Single
Posun se odečte před převodem hodnot na pixely. Použije se na hodnotu vektoru za scaleImage.
- defaultAlpha
- Int32
Výchozí hodnota pro alfa barvu by byla přepsána, pokud colorsPresent obsahuje Alpha.
- defaultRed
- Int32
Výchozí hodnota pro červenou barvu by byla přepsána, pokud colorsPresent obsahuje Red.
- defaultGreen
- Int32
Výchozí hodnota pro zelenou barvu by byla přepsána, pokud colorsPresent obsahuje Green.
- defaultBlue
- Int32
Výchozí hodnota pro modrou barvu by byla přepsána, pokud colorsPresent obsahuje Blue.
Návraty
Příklady
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;
namespace Samples.Dynamic
{
public static class ConvertToImage
{
private const int imageHeight = 224;
private const int imageWidth = 224;
private const int numberOfChannels = 3;
private const int inputSize = imageHeight * imageWidth * numberOfChannels;
// Sample that shows how an input array (of doubles) can be used to interop
// with image related estimators in ML.NET.
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();
// Create a list of training data points.
var dataPoints = GenerateRandomDataPoints(4);
// Convert the list of data points to an IDataView object, which is
// consumable by ML.NET API.
var data = mlContext.Data.LoadFromEnumerable(dataPoints);
// Image loading pipeline.
var pipeline = mlContext.Transforms.ConvertToImage(imageHeight,
imageWidth, "Image", "Features")
.Append(mlContext.Transforms.ExtractPixels("Pixels", "Image"));
var transformedData = pipeline.Fit(data).Transform(data);
// Preview the transformedData.
PrintColumns(transformedData);
// Features Image Pixels
// 185,209,196,142,52... {Width=224, Height=224} 185,209,196,142,52...
// 182,235,84,23,87... {Width=224, Height=224} 182,235,84,23,87...
// 192,214,247,22,38... {Width=224, Height=224} 192,214,247,22,38...
// 242,161,141,223,192... {Width=224, Height=224} 242,161,141,223,192...
}
private static void PrintColumns(IDataView transformedData)
{
Console.WriteLine("{0, -25} {1, -25} {2, -25}", "Features", "Image",
"Pixels");
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.
VBuffer<float> features = default;
VBuffer<float> pixels = default;
MLImage imageObject = null;
var featuresGetter = cursor.GetGetter<VBuffer<float>>(cursor.Schema[
"Features"]);
var pixelsGetter = cursor.GetGetter<VBuffer<float>>(cursor.Schema[
"Pixels"]);
var imageGetter = cursor.GetGetter<MLImage>(cursor.Schema["Image"]);
while (cursor.MoveNext())
{
featuresGetter(ref features);
pixelsGetter(ref pixels);
imageGetter(ref imageObject);
Console.WriteLine("{0, -25} {1, -25} {2, -25}", string.Join(",",
features.DenseValues().Take(5)) + "...",
$"Width={imageObject.Width}, Height={imageObject.Height}",
string.Join(",", pixels.DenseValues().Take(5)) + "...");
}
// Dispose the image.
imageObject.Dispose();
}
}
private class DataPoint
{
[VectorType(inputSize)]
public float[] Features { get; set; }
}
private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count,
int seed = 0)
{
var random = new Random(seed);
for (int i = 0; i < count; i++)
yield return new DataPoint
{
Features = Enumerable.Repeat(0,
inputSize).Select(x => (float)random.Next(0, 256)).ToArray()
};
}
}
}