Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Pode usar o Extrator de Objetos de Imagem para identificar objetos específicos numa imagem. O modelo considera tanto uma imagem quanto um objeto de "sugestões" e retorna uma máscara do objeto identificado.
Para obter detalhes da API, consulte API ref for AI imaging features.
Para obter detalhes sobre moderação de conteúdo, consulte Segurança de conteúdo com APIs de IA generativas.
Importante
Requisitos de manifesto do pacote: para usar APIs de criação de imagens do Windows AI, seu aplicativo deve ser empacotado como um pacote MSIX com o recurso declarado systemAIModels no .Package.appxmanifest Além disso, assegure-se de que o atributo do MaxVersionTested manifesto esteja definido como uma versão recente do Windows (por exemplo, 10.0.26226.0 ou posterior) para suportar adequadamente os recursos de IA do Windows. O uso de valores mais antigos pode causar erros "Não declarado pelo aplicativo" ao carregar o modelo.
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
</Dependencies>
Fornecer dicas
Pode fornecer dicas através de qualquer combinação do seguinte:
- Coordenadas para pontos que pertencem ao que você está identificando.
- Coordenadas para pontos que não pertencem ao que você está identificando.
- Um retângulo de coordenadas que inclui o que você está identificando.
Quanto mais dicas você fornecer, mais preciso o modelo pode ser. Siga estas diretrizes de dicas para minimizar resultados imprecisos ou erros.
- Evite usar vários retângulos numa pista, pois eles podem produzir uma máscara imprecisa.
- Evite usar exclusivamente pontos de exclusão sem incluir pontos ou um retângulo.
- Não especifique mais do que o máximo suportado de 32 coordenadas (1 para um ponto, 2 para um retângulo), pois isso retornará um erro.
A máscara devolvida está em formato de escala de cinza de 8 bits, com os píxeis da máscara do objeto identificado a terem um valor de 255 (enquanto todos os outros têm um valor de 0).
Exemplo do Extrator de Objeto de Imagem
Os exemplos a seguir mostram maneiras de identificar um objeto dentro de uma imagem. Os exemplos pressupõem que você já tenha um objeto de bitmap de software (softwareBitmap) para a entrada.
Assegure que o modelo Image Object Extractor está disponível chamando o método GetReadyState e aguardando que o método EnsureReadyAsync retorne com sucesso.
Assim que o modelo Image Object Extractor estiver disponível, crie um objeto ImageObjectExtractor para o referenciar.
Passe a imagem para CreateWithSoftwareBitmapAsync.
Crie um objeto ImageObjectExtractorHint . Outras maneiras de criar um objeto de dica com entradas diferentes são demonstradas posteriormente.
Envie a dica para o modelo usando o método GetSoftwareBitmapObjectMask , que retorna o resultado final.
using Microsoft.Graphics.Imaging;
using Microsoft.Windows.AI;
using Microsoft.Windows.Management.Deployment;
using Windows.Graphics.Imaging;
if (ImageObjectExtractor.GetReadyState() == AIFeatureReadyState.NotReady)
{
var result = await ImageObjectExtractor.EnsureReadyAsync();
if (result.Status != AIFeatureReadyResultState.Success)
{
throw result.ExtendedError;
}
}
ImageObjectExtractor imageObjectExtractor = await ImageObjectExtractor.CreateWithSoftwareBitmapAsync(softwareBitmap);
ImageObjectExtractorHint hint = new ImageObjectExtractorHint{
includeRects: null,
includePoints:
new List<PointInt32> { new PointInt32(306, 212),
new PointInt32(216, 336)},
excludePoints: null};
SoftwareBitmap finalImage = imageObjectExtractor.GetSoftwareBitmapObjectMask(hint);
#include <winrt/Microsoft.Graphics.Imaging.h>
#include <winrt/Microsoft.Windows.AI.Imaging.h>
#include <winrt/Windows.Graphics.Imaging.h>
#include <winrt/Windows.Foundation.h>
using namespace winrt::Microsoft::Graphics::Imaging;
using namespace winrt::Microsoft::Windows::AI.Imaging;
using namespace winrt::Windows::Graphics::Imaging;
using namespace winrt::Windows::Foundation;
if (ImageObjectExtractor::GetReadyState() == AIFeatureReadyState::NotReady)
{
auto loadResult = ImageObjectExtractor::EnsureReadyAsync().get();
if (loadResult.Status() != AIFeatureReadyResultState::Success)
{
throw winrt::hresult_error(loadResult.ExtendedError());
}
}
ImageObjectExtractor imageObjectExtractor = ImageObjectExtractor::CreateWithSoftwareBitmapAsync(softwareBitmap).get();
ImageObjectExtractorHint hint(
{},
{
Windows::Graphics::PointInt32{306, 212},
Windows::Graphics::PointInt32{216, 336}
},
{}
);
Windows::Graphics::Imaging::SoftwareBitmap finalImage = imageObjectExtractor.GetSoftwareBitmapObjectMask(hint);
Especificar dicas com pontos incluídos e excluídos
Este trecho de código demonstra como usar pontos incluídos e excluídos como dicas.
ImageObjectExtractorHint hint(
includeRects: null,
includePoints:
new List<PointInt32> { new PointInt32(150, 90),
new PointInt32(216, 336),
new PointInt32(550, 330)},
excludePoints:
new List<PointInt32> { new PointInt32(306, 212) });
ImageObjectExtractorHint hint(
{},
{
PointInt32{150, 90},
PointInt32{216, 336},
PointInt32{550, 330}
},
{
PointInt32{306, 212}
}
);
Especificar dicas com retângulo
Este trecho de código demonstra como usar um retângulo (RectInt32 é X, Y, Width, Height) como uma dica.
ImageObjectExtractorHint hint(
includeRects:
new List<RectInt32> {new RectInt32(370, 278, 285, 126)},
includePoints: null,
excludePoints: null );
ImageObjectExtractorHint hint(
{
RectInt32{370, 278, 285, 126}
},
{},
{}
);