Udostępnij przez


Obraz o super rozdzielczości

API nadpróbkowania obrazu umożliwiają wyostrzanie i skalowanie obrazów.

Skalowanie jest ograniczone do maksymalnego współczynnika 8x, ponieważ czynniki o większej skali mogą wprowadzać artefakty i naruszyć dokładność obrazu. Jeśli ostateczna szerokość lub wysokość jest większa niż 8x ich oryginalnych wartości, zostanie zgłoszony wyjątek.

Aby uzyskać szczegółowe informacje o interfejsie API, zobacz dokumentację interfejsu API dotyczącą funkcji przetwarzania obrazów AI.

Aby uzyskać szczegółowe informacje na temat moderowania zawartości, zobacz Bezpieczeństwo zawartości za pomocą interfejsów API generowania sztucznej inteligencji.

Ważne

Wymagania manifestu pakietu: aby korzystać z interfejsów API tworzenia obrazów sztucznej inteligencji systemu Windows, aplikacja musi być spakowana jako pakiet MSIX z funkcją systemAIModels zadeklarowaną w pliku Package.appxmanifest. Ponadto upewnij się, że atrybut manifestu MaxVersionTested jest ustawiony na najnowszą wersję systemu Windows (np 10.0.26226.0 . lub nowszą), aby prawidłowo obsługiwać funkcje sztucznej inteligencji systemu Windows. Użycie starszych wartości może spowodować błędy "Nie zadeklarowane przez aplikację" podczas ładowania modelu.

<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>

Przykład superrozdzielczości obrazu

W poniższym przykładzie pokazano, jak zmienić skalę (, targetWidth) istniejącego obrazu mapy bitowej oprogramowania (targetHeightsoftwareBitmap) i poprawić ostrość obrazu przy użyciu ImageScaler obiektu (aby poprawić ostrość bez skalowania obrazu, po prostu określić istniejącą szerokość i wysokość obrazu).

  1. Upewnij się, że model superrozdzielczości obrazu jest dostępny, wywołując metodę GetReadyState, a następnie czekając na pomyślne zakończenie metody EnsureReadyAsync.

  2. Po udostępnieniu modelu super rozdzielczości obrazu utwórz obiekt ImageScaler, aby się do niego odwoływać.

  3. Pobierz wyostrzoną i skalowaną wersję istniejącego obrazu, przekazując istniejący obraz oraz żądaną szerokość i wysokość do modelu przy użyciu metody ScaleSoftwareBitmap .

using Microsoft.Graphics.Imaging;
using Microsoft.Windows.Management.Deployment;
using Microsoft.Windows.AI;
using Windows.Graphics.Imaging;

if (ImageScaler.GetReadyState() == AIFeatureReadyState.NotReady) 
{
    var result = await ImageScaler.EnsureReadyAsync();
    if (result.Status != AIFeatureReadyResultState.Success)
    {
        throw result.ExtendedError;
    }
}
ImageScaler imageScaler = await ImageScaler.CreateAsync();
SoftwareBitmap finalImage = imageScaler.ScaleSoftwareBitmap(softwareBitmap, targetWidth, targetHeight);
#include <winrt/Microsoft.Graphics.Imaging.h>
#include <winrt/Microsoft.Windows.AI.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Graphics.Imaging.h>

using namespace winrt::Microsoft::Graphics::Imaging;
using namespace winrt::Microsoft::Windows::AI;
using namespace winrt::Windows::Foundation; 
using namespace winrt::Windows::Graphics::Imaging; 

if (ImageScaler::GetReadyState() == AIFeatureReadyState::NotReady)
{
    auto loadResult = ImageScaler::EnsureReadyAsync().get();

    if (loadResult.Status() != AIFeatureReadyResultState::Success)
    {
        throw winrt::hresult_error(loadResult.ExtendedError());
    }
}
int targetWidth = 100;
int targetHeight = 100;
ImageScaler imageScaler = ImageScaler::CreateAsync().get();
Windows::Graphics::Imaging::SoftwareBitmap finalImage = 
    imageScaler.ScaleSoftwareBitmap(softwareBitmap, targetWidth, targetHeight);

Zobacz także