Görüntü Analizi 4.0 Çözümle API'sini çağırma

Bu makalede, görüntünün görsel özellikleri hakkında bilgi döndürmek için Görüntü Analizi 4.0 API'sinin nasıl çağrılacakları gösterilmektedir. Ayrıca döndürülen bilgilerin nasıl ayrıştırabileceğinizi de gösterir.

Önkoşullar

Bu kılavuzda, hızlı başlangıç sayfasında belirtilen adımları izlediğiniz varsayılır . Diğer bir deyişle:

İstemci oluşturma ve kimlik doğrulaması

Görüntü Analizi hizmetinde kimlik doğrulaması yapmak için bir Görüntü İşleme anahtarı ve uç nokta URL'si gerekir. Bu kılavuzda, ortam değişkenlerini VISION_KEY ve VISION_ENDPOINT anahtarınızla uç noktanızı tanımladığınız varsayılır.

İpucu

Anahtarı doğrudan kodunuz içinde eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi daha fazla kimlik doğrulama seçeneği için Azure AI hizmetleri güvenlik makalesine bakın.

ImageAnalysisClient nesnesi oluşturarak başlayın. Örneğin:

string endpoint = Environment.GetEnvironmentVariable("VISION_ENDPOINT");
string key = Environment.GetEnvironmentVariable("VISION_KEY");

// Create an Image Analysis client.
ImageAnalysisClient client = new ImageAnalysisClient(
    new Uri(endpoint),
    new AzureKeyCredential(key));

Analiz etmek için görüntüyü seçin

Genel olarak erişilebilen bir görüntü URL'si sağlayarak veya sdk'ya ikili veri geçirerek bir görüntü seçebilirsiniz. Bkz. Desteklenen görüntü biçimleri için görüntü gereksinimleri .

Görüntü URL'si

Analiz etmek istediğiniz görüntü için bir Uri nesnesi oluşturun.

Uri imageURL = new Uri("https://aka.ms/azsdk/image-analysis/sample.jpg");

Görüntü arabelleği

Alternatif olarak, görüntü verilerini bir BinaryData nesnesi aracılığıyla SDK'ya geçirebilirsiniz. Örneğin, analiz etmek istediğiniz yerel görüntü dosyasından okuyun.

using FileStream stream = new FileStream("sample.jpg", FileMode.Open);
BinaryData imageData = BinaryData.FromStream(stream);

Görsel özellikleri seçme

Analysis 4.0 API'si, hizmetin tüm görüntü analizi özelliklerine erişmenizi sağlar. Kendi kullanım örneğinize göre hangi işlemlerin gerçekleştirileceğini seçin. Her özelliğin açıklaması için genel bakışa bakın. Bu bölümdeki örnek, kullanılabilir tüm görsel özellikleri ekler, ancak pratik kullanım için büyük olasılıkla daha az sayıda görsele ihtiyacınız vardır.

Önemli

Görsel özellikler Captions ve DenseCaptions yalnızca şu Azure bölgelerinde desteklenir: Doğu ABD, Orta Fransa, Orta Kore, Kuzey Avrupa, Güneydoğu Asya, Batı Avrupa, Batı ABD.

VisualFeatures visualFeatures =
    VisualFeatures.Caption |
    VisualFeatures.DenseCaptions |
    VisualFeatures.Objects |
    VisualFeatures.Read |
    VisualFeatures.Tags |
    VisualFeatures.People |
    VisualFeatures.SmartCrops;

Analiz seçeneklerini belirleme

ÇÖZÜMLE API çağrısı için çeşitli seçenekleri belirtmek için ImageAnalysisOptions nesnesi kullanın.

  • Dil: Döndürülen verilerin dilini belirtebilirsiniz. Dil isteğe bağlıdır ve varsayılanı İngilizce'dir. Desteklenen dil kodlarının listesi ve her dil için desteklenen görsel özelliklerin listesi için bkz . Dil desteği .
  • Cinsiyete bağımsız başlık: başlık veya yoğun başlık ayıklarsanız (VisualFeatures.Caption veya VisualFeatures.DenseCaptions kullanarak), cinsiyete bağımsız başlık isteyebilirsiniz. Cinsiyetsiz başlık isteğe bağlıdır ve varsayılan değer cinsiyet başlık olarak kabul edilir. Örneğin, İngilizce'de cinsiyete bağlı olmayan başlık seçtiğinizde, kadın veya erkek gibi terimler kişi ile değiştirilir ve erkek veya kız çocuk ile değiştirilir.
  • Kırpma en boy oranı: Hedef kırpma genişliği yüksekliğe bölünerek en boy oranı hesaplanır. Desteklenen değerler 0,75 ile 1,8 (dahil) arasındadır. Bu özelliğin ayarlanması yalnızca görsel özellik listesinin bir parçası olarak VisualFeatures.SmartCrops seçildiğinde geçerlidir. VisualFeatures.SmartCrops'u seçerseniz ancak en boy oranlarını belirtmezseniz, hizmet uygun gördüğü en boy oranına sahip bir kırpma önerisi döndürür. Bu durumda en boy oranı 0,5 ile 2,0 (dahil) arasındadır.
ImageAnalysisOptions options = new ImageAnalysisOptions { 
    GenderNeutralCaption = true,
    Language = "en",
    SmartCropsAspectRatios = new float[] { 0.9F, 1.33F }};

Çözümle API'sini çağırma

Bu bölümde, hizmete nasıl analiz çağrısı yapabileceğiniz gösterilir.

Burada gösterildiği gibi ImageAnalysisClient nesnesinde Analyze yöntemini çağırın. Çağrı zaman uyumludur ve hizmet sonuçları döndürene veya bir hata oluşana kadar engeller. Alternatif olarak, engelleyici olmayan AnalyzeAsync yöntemini çağırabilirsiniz.

Yukarıdaki bölümlerde oluşturulan giriş nesnelerini kullanın. URL yerine görüntü arabelleğinden analiz etmek için yöntem çağrısında değerini değişkeniyle imageData değiştirinimageURL.

ImageAnalysisResult result = client.Analyze(
    imageURL,
    visualFeatures,
    options);

Hizmetten sonuç alma

Aşağıdaki kod, çeşitli Çözümle işlemlerinin sonuçlarını nasıl ayrıştırabileceğinizi gösterir.

Console.WriteLine("Image analysis results:");

// Print caption results to the console
Console.WriteLine(" Caption:");
Console.WriteLine($"   '{result.Caption.Text}', Confidence {result.Caption.Confidence:F4}");

// Print dense caption results to the console
Console.WriteLine(" Dense Captions:");
foreach (DenseCaption denseCaption in result.DenseCaptions.Values)
{
    Console.WriteLine($"   '{denseCaption.Text}', Confidence {denseCaption.Confidence:F4}, Bounding box {denseCaption.BoundingBox}");
}

// Print object detection results to the console
Console.WriteLine(" Objects:");
foreach (DetectedObject detectedObject in result.Objects.Values)
{
    Console.WriteLine($"   '{detectedObject.Tags.First().Name}', Bounding box {detectedObject.BoundingBox.ToString()}");
}

// Print text (OCR) analysis results to the console
Console.WriteLine(" Read:");
foreach (DetectedTextBlock block in result.Read.Blocks)
    foreach (DetectedTextLine line in block.Lines)
    {
        Console.WriteLine($"   Line: '{line.Text}', Bounding Polygon: [{string.Join(" ", line.BoundingPolygon)}]");
        foreach (DetectedTextWord word in line.Words)
        {
            Console.WriteLine($"     Word: '{word.Text}', Confidence {word.Confidence.ToString("#.####")}, Bounding Polygon: [{string.Join(" ", word.BoundingPolygon)}]");
        }
    }

// Print tags results to the console
Console.WriteLine(" Tags:");
foreach (DetectedTag tag in result.Tags.Values)
{
    Console.WriteLine($"   '{tag.Name}', Confidence {tag.Confidence:F4}");
}

// Print people detection results to the console
Console.WriteLine(" People:");
foreach (DetectedPerson person in result.People.Values)
{
    Console.WriteLine($"   Person: Bounding box {person.BoundingBox.ToString()}, Confidence {person.Confidence:F4}");
}

// Print smart-crops analysis results to the console
Console.WriteLine(" SmartCrops:");
foreach (CropRegion cropRegion in result.SmartCrops.Values)
{
    Console.WriteLine($"   Aspect ratio: {cropRegion.AspectRatio}, Bounding box: {cropRegion.BoundingBox}");
}

// Print metadata
Console.WriteLine(" Metadata:");
Console.WriteLine($"   Model: {result.ModelVersion}");
Console.WriteLine($"   Image width: {result.Metadata.Width}");
Console.WriteLine($"   Image hight: {result.Metadata.Height}");

Sorun giderme

Özel durumları işleme

.NET SDK'sını kullanarak Görüntü Analizi ile etkileşime geçtiğinizde, hizmetten gelen ve (başarılı) durum kodu olmayan 200 tüm yanıtlar bir özel durum oluşturulur. Örneğin, bozuk bir URL nedeniyle erişilebilir olmayan bir görüntüyü analiz etmeye çalışırsanız, hatalı bir isteği gösteren bir 400 durum döndürülür ve buna karşılık gelen bir özel durum oluşturulur.

Aşağıdaki kod parçacığında, özel durum yakalanarak ve hata hakkında ek bilgiler görüntülenerek hatalar düzgün bir şekilde işlenir.

var imageUrl = new Uri("https://some-host-name.com/non-existing-image.jpg");

try
{
    var result = client.Analyze(imageUrl, VisualFeatures.Caption);
}
catch (RequestFailedException e)
{
    if (e.Status != 200)
    {
        Console.WriteLine("Error analyzing image.");
        Console.WriteLine($"HTTP status code {e.Status}: {e.Message}");
    }
    else
    {
        throw;
    }
}

SDK günlüğünü etkinleştirme hakkında daha fazla bilgiyi burada bulabilirsiniz.

Önkoşullar

Bu kılavuzda, hızlı başlangıçta belirtilen adımları izlediğiniz varsayılır. Diğer bir deyişle:

İstemci oluşturma ve kimlik doğrulaması

Görüntü Analizi hizmetinde kimlik doğrulaması yapmak için bir Görüntü İşleme anahtarı ve uç nokta URL'si gerekir. Bu kılavuzda, ortam değişkenlerini VISION_KEY ve VISION_ENDPOINT anahtarınızla uç noktanızı tanımladığınız varsayılır.

İpucu

Anahtarı doğrudan kodunuz içinde eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi daha fazla kimlik doğrulama seçeneği için Azure AI hizmetleri güvenlik makalesine bakın.

Oluşturuculardan birini kullanarak bir ImageAnalysisClient nesnesi oluşturarak başlayın. Örneğin:

client = ImageAnalysisClient(
    endpoint=endpoint,
    credential=AzureKeyCredential(key)
)

Analiz etmek için görüntüyü seçin

Genel olarak erişilebilen bir görüntü URL'si sağlayarak veya görüntü verilerini SDK'nın giriş arabelleğine okuyarak bir görüntü seçebilirsiniz. Bkz. Desteklenen görüntü biçimleri için görüntü gereksinimleri .

Görüntü URL'si

Aşağıdaki örnek görüntü URL'sini kullanabilirsiniz.

# Define image URL
image_url = "https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png"

Görüntü arabelleği

Alternatif olarak, görüntüyü bayt nesnesi olarak geçirebilirsiniz. Örneğin, analiz etmek istediğiniz yerel görüntü dosyasından okuyun.

# Load image to analyze into a 'bytes' object
with open("sample.jpg", "rb") as f:
    image_data = f.read()

Görsel özellikleri seçme

Analysis 4.0 API'si, hizmetin tüm görüntü analizi özelliklerine erişmenizi sağlar. Kendi kullanım örneğinize göre hangi işlemlerin gerçekleştirileceğini seçin. Her özelliğin açıklaması için genel bakışa bakın. Bu bölümdeki örnek, kullanılabilir tüm görsel özellikleri ekler, ancak pratik kullanım için büyük olasılıkla daha az sayıda görsele ihtiyacınız vardır.

visual_features =[
        VisualFeatures.TAGS,
        VisualFeatures.OBJECTS,
        VisualFeatures.CAPTION,
        VisualFeatures.DENSE_CAPTIONS,
        VisualFeatures.READ,
        VisualFeatures.SMART_CROPS,
        VisualFeatures.PEOPLE,
    ]

seçeneklerle analyze_from_url yöntemini çağırma

Aşağıdaki kod, yukarıda seçtiğiniz özellikler ve aşağıda tanımlanan ek seçeneklerle istemcide analyze_from_url yöntemini çağırır. URL yerine bir görüntü arabelleğinden analiz etmek için, bunun yerine ilk bağımsız değişken olarak yöntemi çözümle'yiimage_data=image_data çağırın.

# Analyze all visual features from an image stream. This will be a synchronously (blocking) call.
result = client.analyze_from_url(
    image_url=image_url,
    visual_features=visual_features,
    smart_crops_aspect_ratios=[0.9, 1.33],
    gender_neutral_caption=True,
    language="en"
)

Akıllı kırpma en boy oranlarını seçme

Hedef kırpma genişliği yüksekliğe bölünerek en boy oranı hesaplanır. Desteklenen değerler 0,75 ile 1,8 (dahil) arasındadır. Bu özelliğin ayarlanması yalnızca görsel özellik listesinin bir parçası olarak VisualFeatures.SMART_CROPS seçildiğinde geçerlidir. VisualFeatures.SMART_CROPS seçerseniz ancak en boy oranlarını belirtmezseniz, hizmet uygun gördüğü en boy oranına sahip bir kırpma önerisi döndürür. Bu durumda en boy oranı 0,5 ile 2,0 (dahil) arasındadır.

Cinsiyete göre bağımsız başlık seçin

başlık veya yoğun başlık ayıklarsanız (VisualFeatures.CAPTION veya VisualFeatures.DENSE_CAPTIONS kullanarak), cinsiyetsiz başlık isteyebilirsiniz. Cinsiyetsiz başlık isteğe bağlıdır ve varsayılan değer cinsiyet başlık olarak kabul edilir. Örneğin, İngilizce'de cinsiyete bağlı olmayan başlık seçtiğinizde, kadın veya erkek gibi terimler kişi ile değiştirilir ve erkek veya kız çocuk ile değiştirilir.

Dilleri belirtme

Döndürülen verilerin dilini belirtebilirsiniz. Dil isteğe bağlıdır ve varsayılanı İngilizce'dir. Desteklenen dil kodlarının listesi ve her dil için desteklenen görsel özelliklerin listesi için bkz . Dil desteği .

Hizmetten sonuç alma

Aşağıdaki kodda, analyze_from_url sonuçları ayrıştırma veya analiz işlemleri gösterilmektedir.

# Print all analysis results to the console
print("Image analysis results:")

if result.caption is not None:
    print(" Caption:")
    print(f"   '{result.caption.text}', Confidence {result.caption.confidence:.4f}")

if result.dense_captions is not None:
    print(" Dense Captions:")
    for caption in result.dense_captions.list:
        print(f"   '{caption.text}', {caption.bounding_box}, Confidence: {caption.confidence:.4f}")

if result.read is not None:
    print(" Read:")
    for line in result.read.blocks[0].lines:
        print(f"   Line: '{line.text}', Bounding box {line.bounding_polygon}")
        for word in line.words:
            print(f"     Word: '{word.text}', Bounding polygon {word.bounding_polygon}, Confidence {word.confidence:.4f}")

if result.tags is not None:
    print(" Tags:")
    for tag in result.tags.list:
        print(f"   '{tag.name}', Confidence {tag.confidence:.4f}")

if result.objects is not None:
    print(" Objects:")
    for object in result.objects.list:
        print(f"   '{object.tags[0].name}', {object.bounding_box}, Confidence: {object.tags[0].confidence:.4f}")

if result.people is not None:
    print(" People:")
    for person in result.people.list:
        print(f"   {person.bounding_box}, Confidence {person.confidence:.4f}")

if result.smart_crops is not None:
    print(" Smart Cropping:")
    for smart_crop in result.smart_crops.list:
        print(f"   Aspect ratio {smart_crop.aspect_ratio}: Smart crop {smart_crop.bounding_box}")

print(f" Image height: {result.metadata.height}")
print(f" Image width: {result.metadata.width}")
print(f" Model version: {result.model_version}")

Sorun giderme

Özel durumlar

Yöntemler, analyze hizmetten başarılı olmayan bir HTTP durum kodu yanıtı için HttpResponseError özel durumu oluşturur. Özel durum status_code , HTTP yanıt durum kodudur. Özel durum, error.message sorunu tanılamanıza olanak tanıyan ayrıntılı bir ileti içerir:

try:
    result = client.analyze( ... )
except HttpResponseError as e:
    print(f"Status code: {e.status_code}")
    print(f"Reason: {e.reason}")
    print(f"Message: {e.error.message}")

Örneğin, yanlış bir kimlik doğrulama anahtarı sağladığınızda:

Status code: 401
Reason: PermissionDenied
Message: Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource.

Ya da var olmayan veya erişilebilir olmayan bir görüntü URL'si sağladığınızda:

Status code: 400
Reason: Bad Request
Message: The provided image url is not accessible.

Günlük Kaydı

İstemci standart Python günlük kitaplığını kullanır. SDK HTTP isteğini ve yanıt ayrıntılarını günlüğe kaydeder ve bu sorun gidermede yararlı olabilir. stdout'ta oturum açmak için aşağıdakileri ekleyin:

import sys
import logging

# Acquire the logger for this client library. Use 'azure' to affect both
# 'azure.core` and `azure.ai.vision.imageanalysis' libraries.
logger = logging.getLogger("azure")

# Set the desired logging level. logging.INFO or logging.DEBUG are good options.
logger.setLevel(logging.INFO)

# Direct logging output to stdout (the default):
handler = logging.StreamHandler(stream=sys.stdout)
# Or direct logging output to a file:
# handler = logging.FileHandler(filename = 'sample.log')
logger.addHandler(handler)

# Optional: change the default logging format. Here we add a timestamp.
formatter = logging.Formatter("%(asctime)s:%(levelname)s:%(name)s:%(message)s")
handler.setFormatter(formatter)

Varsayılan olarak günlükler URL sorgu dizelerinin değerlerini, bazı HTTP isteği ve yanıt üst bilgilerinin değerlerini (anahtarı tutanlar dahil Ocp-Apim-Subscription-Key ) ve istek ve yanıt yüklerini yeniden işler. Redaction olmadan günlükler oluşturmak için, oluştururken ImageAnalysisClientveya istemciyi çağırdığınızda analyze yöntem bağımsız değişkenini logging_enable = True ayarlayın.

# Create an Image Analysis client with none redacted log
client = ImageAnalysisClient(
    endpoint=endpoint,
    credential=AzureKeyCredential(key),
    logging_enable=True
)

Yalnızca günlük düzeyi logging.DEBUG için hiçbir yeniden işlem yapılan günlük oluşturulmaz. Güvenliğin tehlikeye atılmasını önlemek için hiçbir yeniden işlem yapılan günlükleri korumayı unutmayın. Daha fazla bilgi için bkz . Python için Azure kitaplıklarında günlüğe kaydetmeyi yapılandırma

Önkoşullar

Bu kılavuzda, hızlı başlangıç sayfasındaki adımları izlediğiniz varsayılır . Diğer bir deyişle:

İstemci oluşturma ve kimlik doğrulaması

Görüntü Analizi hizmetiyle kimlik doğrulaması yapmak için bir Görüntü İşleme anahtarı ve uç nokta URL'si gerekir. Bu kılavuzda, ortam değişkenlerini VISION_KEY ve VISION_ENDPOINT anahtarınızla uç noktanızı tanımladığınız varsayılır.

İpucu

Anahtarı doğrudan kodunuz içinde eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi daha fazla kimlik doğrulama seçeneği için Azure AI hizmetleri güvenlik makalesine bakın.

ImageAnalysisClient nesnesi oluşturarak başlayın. Örneğin:

String endpoint = System.getenv("VISION_ENDPOINT");
String key = System.getenv("VISION_KEY");

if (endpoint == null || key == null) {
    System.out.println("Missing environment variable 'VISION_ENDPOINT' or 'VISION_KEY'.");
    System.out.println("Set them before running this sample.");
    System.exit(1);
}

// Create a synchronous Image Analysis client.
ImageAnalysisClient client = new ImageAnalysisClientBuilder()
    .endpoint(endpoint)
    .credential(new KeyCredential(key))
    .buildClient();

Analiz etmek için görüntüyü seçin

Genel olarak erişilebilen bir görüntü URL'si sağlayarak veya görüntü verilerini SDK'nın giriş arabelleğine okuyarak bir görüntü seçebilirsiniz. Bkz. Desteklenen görüntü biçimleri için görüntü gereksinimleri .

Görüntü URL'si

Analiz etmek istediğiniz görüntünün genel olarak erişilebilen URL'sini tutmak için bir imageUrl dize oluşturun.

String imageUrl = "https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png";

Görüntü arabelleği

Alternatif olarak, bir BinaryData nesnesi kullanarak görüntüyü bellek arabelleği olarak geçirebilirsiniz. Örneğin, analiz etmek istediğiniz yerel görüntü dosyasından okuyun.

BinaryData imageData = BinaryData.fromFile(new File("sample.png").toPath());

Görsel özellikleri seçme

Analysis 4.0 API'si, hizmetin tüm görüntü analizi özelliklerine erişmenizi sağlar. Kendi kullanım örneğinize göre hangi işlemlerin gerçekleştirileceğini seçin. Her özelliğin açıklaması için genel bakışa bakın. Bu bölümdeki örnek, kullanılabilir tüm görsel özellikleri ekler, ancak pratik kullanım için büyük olasılıkla daha az sayıda görsele ihtiyacınız vardır.

Önemli

Resim Yazıları ve DenseCaptions görsel özellikleri yalnızca şu Azure bölgelerinde desteklenir: Doğu ABD, Orta Fransa, Orta Kore, Kuzey Avrupa, Güneydoğu Asya, Batı Avrupa, Batı ABD.

// visualFeatures: Select one or more visual features to analyze.
List<VisualFeatures> visualFeatures = Arrays.asList(
            VisualFeatures.SMART_CROPS,
            VisualFeatures.CAPTION,
            VisualFeatures.DENSE_CAPTIONS,
            VisualFeatures.OBJECTS,
            VisualFeatures.PEOPLE,
            VisualFeatures.READ,
            VisualFeatures.TAGS);

Analiz seçeneklerini belirleme

ÇÖZÜMLE API çağrısı için çeşitli seçenekleri belirtmek için ImageAnalysisOptions nesnesi kullanın.

  • Dil: Döndürülen verilerin dilini belirtebilirsiniz. Dil isteğe bağlıdır ve varsayılanı İngilizce'dir. Desteklenen dil kodlarının listesi ve her dil için desteklenen görsel özelliklerin listesi için bkz . Dil desteği .
  • Cinsiyete bağımsız başlık: başlık veya yoğun başlık ayıklarsanız (VisualFeatures.CAPTION veya VisualFeatures.DENSE_CAPTIONS kullanarak), cinsiyete bağımsız başlık isteyebilirsiniz. Cinsiyetsiz başlık isteğe bağlıdır ve varsayılan değer cinsiyet başlık olarak kabul edilir. Örneğin, İngilizce'de cinsiyete bağlı olmayan başlık seçtiğinizde, kadın veya erkek gibi terimler kişi ile değiştirilir ve erkek veya kız çocuk ile değiştirilir.
  • Kırpma en boy oranı: Hedef kırpma genişliği yüksekliğe bölünerek en boy oranı hesaplanır. Desteklenen değerler 0,75 ile 1,8 (dahil) arasındadır. Bu özelliğin ayarlanması yalnızca görsel özellik listesinin bir parçası olarak VisualFeatures.SMART_CROPS seçildiğinde geçerlidir. VisualFeatures.SMART_CROPS seçerseniz ancak en boy oranlarını belirtmezseniz, hizmet uygun gördüğü en boy oranına sahip bir kırpma önerisi döndürür. Bu durumda en boy oranı 0,5 ile 2,0 (dahil) arasındadır.
// Specify analysis options (or set `options` to null for defaults)
ImageAnalysisOptions options = new ImageAnalysisOptions()
    .setLanguage("en")
    .setGenderNeutralCaption(true)
    .setSmartCropsAspectRatios(Arrays.asList(0.9, 1.33, 1.78));

analyzeFromUrl yöntemini çağırma

Bu bölümde, hizmete nasıl analiz çağrısı yapabileceğiniz gösterilir.

Burada gösterildiği gibi ImageAnalysisClient nesnesinde analyzeFromUrl yöntemini çağırın. Çağrı zaman uyumludur ve hizmet sonuçları döndürene veya bir hata oluşana kadar engeller. Alternatif olarak, bunun yerine bir ImageAnalysisAsyncClient nesnesi kullanabilir ve engellemeyen analyzeFromUrl yöntemini çağırabilirsiniz.

URL yerine bir görüntü arabelleğinden analiz etmek için, bunun yerine çözümle yöntemini çağırın ve ilk bağımsız değişken olarak değerini imageData geçirin.

try {
    // Analyze all visual features from an image URL. This is a synchronous (blocking) call.
    ImageAnalysisResult result = client.analyzeFromUrl(
        imageUrl,
        visualFeatures,
        options);

    printAnalysisResults(result);

} catch (HttpResponseException e) {
    System.out.println("Exception: " + e.getClass().getSimpleName());
    System.out.println("Status code: " + e.getResponse().getStatusCode());
    System.out.println("Message: " + e.getMessage());
} catch (Exception e) {
    System.out.println("Message: " + e.getMessage());
}

Hizmetten sonuç alma

Aşağıdaki kod, analyzeFromUrl ve analiz işlemlerinden sonuçları ayrıştırma işlemini gösterir.

// Print all analysis results to the console
public static void printAnalysisResults(ImageAnalysisResult result) {

    System.out.println("Image analysis results:");

    if (result.getCaption() != null) {
        System.out.println(" Caption:");
        System.out.println("   \"" + result.getCaption().getText() + "\", Confidence "
            + String.format("%.4f", result.getCaption().getConfidence()));
    }

    if (result.getDenseCaptions() != null) {
        System.out.println(" Dense Captions:");
        for (DenseCaption denseCaption : result.getDenseCaptions().getValues()) {
            System.out.println("   \"" + denseCaption.getText() + "\", Bounding box "
                + denseCaption.getBoundingBox() + ", Confidence " + String.format("%.4f", denseCaption.getConfidence()));
        }
    }

    if (result.getRead() != null) {
        System.out.println(" Read:");
        for (DetectedTextLine line : result.getRead().getBlocks().get(0).getLines()) {
            System.out.println("   Line: '" + line.getText()
                + "', Bounding polygon " + line.getBoundingPolygon());
            for (DetectedTextWord word : line.getWords()) {
                System.out.println("     Word: '" + word.getText()
                    + "', Bounding polygon " + word.getBoundingPolygon()
                    + ", Confidence " + String.format("%.4f", word.getConfidence()));
            }
        }
    }

    if (result.getTags() != null) {
        System.out.println(" Tags:");
        for (DetectedTag tag : result.getTags().getValues()) {
            System.out.println("   \"" + tag.getName() + "\", Confidence " + String.format("%.4f", tag.getConfidence()));
        }
    }

    if (result.getObjects() != null) {
        System.out.println(" Objects:");
        for (DetectedObject detectedObject : result.getObjects().getValues()) {
            System.out.println("   \"" + detectedObject.getTags().get(0).getName() + "\", Bounding box "
                + detectedObject.getBoundingBox() + ", Confidence " + String.format("%.4f", detectedObject.getTags().get(0).getConfidence()));
        }
    }

    if (result.getPeople() != null) {
        System.out.println(" People:");
        for (DetectedPerson person : result.getPeople().getValues()) {
            System.out.println("   Bounding box "
                + person.getBoundingBox() + ", Confidence " + String.format("%.4f", person.getConfidence()));
        }
    }

    if (result.getSmartCrops() != null) {
        System.out.println(" Crop Suggestions:");
        for (CropRegion cropRegion : result.getSmartCrops().getValues()) {
            System.out.println("   Aspect ratio "
                + cropRegion.getAspectRatio() + ": Bounding box " + cropRegion.getBoundingBox());
        }
    }

    System.out.println(" Image height = " + result.getMetadata().getHeight());
    System.out.println(" Image width = " + result.getMetadata().getWidth());
    System.out.println(" Model version = " + result.getModelVersion());
}

Sorun giderme

Özel durumlar

Yöntemler, analyze hizmet başarılı olmayan bir HTTP durum koduyla yanıtladığında HttpResponseException oluşturur. Özel durum getResponse().getStatusCode() , HTTP yanıt durum kodunu barındırıyor. Özel durum, getMessage() sorunu tanılamanıza olanak tanıyan ayrıntılı bir ileti içerir:

try {
    ImageAnalysisResult result = client.analyze(...)
} catch (HttpResponseException e) {
    System.out.println("Exception: " + e.getClass().getSimpleName());
    System.out.println("Status code: " + e.getResponse().getStatusCode());
    System.out.println("Message: " + e.getMessage());
} catch (Exception e) {
    System.out.println("Message: " + e.getMessage());
}

Örneğin, yanlış bir kimlik doğrulama anahtarı sağladığınızda:

Exception: ClientAuthenticationException
Status code: 401
Message: Status code 401, "{"error":{"code":"401","message":"Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource."}}"

Ya da tanınmayan bir biçimde görüntü sağladığınızda:

Exception: HttpResponseException
Status code: 400
Message: Status code 400, "{"error":{"code":"InvalidRequest","message":"Image format is not valid.","innererror":{"code":"InvalidImageFormat","message":"Input data is not a valid image."}}}"

HTTP isteği/yanıt günlüğünü etkinleştirme

Görüntü Analizi hizmetine gönderilen HTTP isteğini veya kablo üzerinden alınan yanıtı gözden geçirmek sorun gidermede yararlı olabilir. Görüntü Analizi istemci kitaplığı, geçici hata ayıklama amacıyla yerleşik bir konsol günlüğü çerçevesini destekler. Ayrıca SLF4J arabirimini kullanarak daha gelişmiş günlüğe kaydetmeyi de destekler. Ayrıntılı bilgi için bkz . Java için Azure SDK'da günlüğe kaydetmeyi kullanma.

Aşağıdaki bölümlerde yerleşik çerçeveyi kullanarak konsol günlüğünü etkinleştirme açıklanmaktadır.

Ortam değişkenlerini ayarlayarak

Aşağıdaki iki ortam değişkenini ayarlayarak tüm uygulamanız için HTTP isteğinin ve yanıtının konsol günlüğünü etkinleştirebilirsiniz. Bu değişiklik, HTTP isteğinin ve yanıtının günlüğe kaydedilmesini destekleyen her Azure istemcisini etkiler.

  • Ortam değişkenini AZURE_LOG_LEVELdebug
  • Ortam değişkenini AZURE_HTTP_LOG_DETAIL_LEVEL aşağıdaki değerlerden birine ayarlayın:
Değer Günlük düzeyi
none HTTP isteği/yanıt günlüğü devre dışı bırakıldı
basic Yalnızca URL'leri, HTTP yöntemlerini ve isteği tamamlama süresini günlüğe kaydeder.
headers BASIC'teki her şeyin yanı sıra tüm istek ve yanıt üst bilgilerini günlüğe kaydeder.
body BASIC'teki her şeyin yanı sıra tüm istek ve yanıt gövdesini günlüğe kaydeder.
body_and_headers ÜST BILGILER ve GÖVDE içindeki her şeyi günlüğe kaydeder.

httpLogOptions ayarlayarak

Tek bir istemci için HTTP isteğinin ve yanıtının konsol günlüğünü etkinleştirmek için

  • Ortam değişkenini AZURE_LOG_LEVELdebug
  • oluştururken ImageAnalysisClientçağrısı httpLogOptions ekleyin:
ImageAnalysisClient client = new ImageAnalysisClientBuilder()
    .endpoint(endpoint)
    .credential(new KeyCredential(key))
    .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
    .buildClient();

enum HttpLogDetailLevel , desteklenen günlük düzeylerini tanımlar.

Varsayılan olarak, günlüğe kaydedilirken belirli HTTP üst bilgisi ve sorgu parametresi değerleri yeniden işlemden çıkarılır. Hangi üst bilgilerin ve sorgu parametrelerinin günlüğe kaydedileceğini belirterek bu varsayılanı geçersiz kılmak mümkündür:

ImageAnalysisClient client = new ImageAnalysisClientBuilder()
    .endpoint(endpoint)
    .credential(new KeyCredential(key))
    .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS)
        .addAllowedHeaderName("safe-to-log-header-name")
        .addAllowedQueryParamName("safe-to-log-query-parameter-name"))
    .buildClient();

Örneğin, HTTP isteğinin tam bir yeniden işlenmemiş günlüğünü almak için aşağıdakileri uygulayın:

    .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS)
        .addAllowedHeaderName("Ocp-Apim-Subscription-Key")
        .addAllowedQueryParamName("features")
        .addAllowedQueryParamName("language")
        .addAllowedQueryParamName("gender-neutral-caption")
        .addAllowedQueryParamName("smartcrops-aspect-ratios")
        .addAllowedQueryParamName("model-version"))

Yeniden işlemden kaldırılmış bir HTTP yanıtı almak için yukarıdakilere daha fazla ekleyin. Düzeltilmemiş bir günlüğü paylaştığınızda, abonelik anahtarınız gibi gizli diziler içermediğinden emin olun.

Önkoşullar

Bu kılavuzda, hızlı başlangıçta belirtilen adımları izlediğiniz varsayılır. Diğer bir deyişle:

İstemci oluşturma ve kimlik doğrulaması

Görüntü Analizi hizmetinde kimlik doğrulaması yapmak için bir Görüntü İşleme anahtarı ve uç nokta URL'si gerekir. Bu kılavuzda, ortam değişkenlerini VISION_KEY ve VISION_ENDPOINT anahtarınızla uç noktanızı tanımladığınız varsayılır.

İpucu

Anahtarı doğrudan kodunuz içinde eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi daha fazla kimlik doğrulama seçeneği için Azure AI hizmetleri güvenlik makalesine bakın.

ImageAnalysisClient nesnesi oluşturarak başlayın. Örneğin:

// Load the .env file if it exists
require("dotenv").config();

const endpoint = process.env['VISION_ENDPOINT'] || '<your_endpoint>';
const key = process.env['VISION_KEY'] || '<your_key>';

const credential = new AzureKeyCredential(key);
const client = createClient(endpoint, credential);

Analiz etmek için görüntüyü seçin

Genel olarak erişilebilen bir görüntü URL'si sağlayarak veya görüntü verilerini SDK'nın giriş arabelleğine okuyarak bir görüntü seçebilirsiniz. Bkz. Desteklenen görüntü biçimleri için görüntü gereksinimleri .

Görüntü URL'si

Aşağıdaki örnek görüntü URL'sini kullanabilirsiniz.

const imageUrl = 'https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png';

Görüntü arabelleği

Alternatif olarak, görüntüyü veri dizisi olarak geçirebilirsiniz. Örneğin, analiz etmek istediğiniz yerel görüntü dosyasından okuyun.

const imagePath = '../sample.jpg';
const imageData = fs.readFileSync(imagePath);

Görsel özellikleri seçme

Analysis 4.0 API'si, hizmetin tüm görüntü analizi özelliklerine erişmenizi sağlar. Kendi kullanım örneğinize göre hangi işlemlerin gerçekleştirileceğini seçin. Her özelliğin açıklaması için genel bakışa bakın. Bu bölümdeki örnek, kullanılabilir tüm görsel özellikleri ekler, ancak pratik kullanım için büyük olasılıkla daha az sayıda görsele ihtiyacınız vardır.

const features = [
  'Caption',
  'DenseCaptions',
  'Objects',
  'People',
  'Read',
  'SmartCrops',
  'Tags'
];

Çözümle API'sini seçeneklerle çağırma

Aşağıdaki kod, yukarıda seçtiğiniz özellikler ve aşağıda tanımlanan ek seçeneklerle Çözümle API'sini çağırır. URL yerine bir görüntü arabelleğinden analiz etmek için yöntemi çağrısında değerini ile imageDatadeğiştirinimageURL.

const result = await client.path('/imageanalysis:analyze').post({
  body: {
      url: imageUrl
  },
  queryParameters: {
      features: features,
      'language': 'en',
      'gender-neutral-captions': 'true',
      'smartCrops-aspect-ratios': [0.9, 1.33]
  },
  contentType: 'application/json'
});

Akıllı kırpma en boy oranlarını seçme

Hedef kırpma genişliği yüksekliğe bölünerek en boy oranı hesaplanır. Desteklenen değerler 0,75 ile 1,8 (dahil) arasındadır. Bu özelliğin ayarlanması yalnızca görsel özellik listesinin bir parçası olarak VisualFeatures.SmartCrops seçildiğinde geçerlidir. VisualFeatures.SmartCrops'u seçerseniz ancak en boy oranlarını belirtmezseniz, hizmet uygun gördüğü en boy oranına sahip bir kırpma önerisi döndürür. Bu durumda en boy oranı 0,5 ile 2,0 (dahil) arasındadır.

Cinsiyete göre bağımsız başlık seçin

başlık veya yoğun başlık ayıklarsanız (VisualFeatures.Caption veya VisualFeatures.DenseCaptions kullanarak), cinsiyete bağlı olmayan başlık isteyebilirsiniz. Cinsiyetsiz başlık isteğe bağlıdır ve varsayılan değer cinsiyet başlık olarak kabul edilir. Örneğin, İngilizce'de cinsiyete bağlı olmayan başlık seçtiğinizde, kadın veya erkek gibi terimler kişi ile değiştirilir ve erkek veya kız çocuk ile değiştirilir.

Dilleri belirtme

Döndürülen verilerin dilini belirtebilirsiniz. Dil isteğe bağlıdır ve varsayılanı İngilizce'dir. Desteklenen dil kodlarının listesi ve her dil için desteklenen görsel özelliklerin listesi için bkz . Dil desteği .

Hizmetten sonuç alma

Aşağıdaki kod, çeşitli analiz işlemlerinin sonuçlarını nasıl ayrıştırabileceğinizi gösterir.

const iaResult = result.body;

console.log(`Model Version: ${iaResult.modelVersion}`);
console.log(`Image Metadata: ${JSON.stringify(iaResult.metadata)}`);
if (iaResult.captionResult) {
  console.log(`Caption: ${iaResult.captionResult.text} (confidence: ${iaResult.captionResult.confidence})`);
}
if (iaResult.denseCaptionsResult) {
  iaResult.denseCaptionsResult.values.forEach(denseCaption => console.log(`Dense Caption: ${JSON.stringify(denseCaption)}`));
}
if (iaResult.objectsResult) {
  iaResult.objectsResult.values.forEach(object => console.log(`Object: ${JSON.stringify(object)}`));
}
if (iaResult.peopleResult) {
  iaResult.peopleResult.values.forEach(person => console.log(`Person: ${JSON.stringify(person)}`));
}
if (iaResult.readResult) {
  iaResult.readResult.blocks.forEach(block => console.log(`Text Block: ${JSON.stringify(block)}`));
}
if (iaResult.smartCropsResult) {
  iaResult.smartCropsResult.values.forEach(smartCrop => console.log(`Smart Crop: ${JSON.stringify(smartCrop)}`));
}
if (iaResult.tagsResult) {
  iaResult.tagsResult.values.forEach(tag => console.log(`Tag: ${JSON.stringify(tag)}`));
}

Sorun giderme

Günlük Kaydı

Günlüğe kaydetmeyi etkinleştirmek, hatalarla ilgili yararlı bilgilerin ortaya çıkmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için ortam değişkenini AZURE_LOG_LEVEL olarak infoayarlayın. Alternatif olarak, içinde çağrılarak setLogLevel@azure/loggergünlük kaydı çalışma zamanında etkinleştirilebilir:

const { setLogLevel } = require("@azure/logger");

setLogLevel("info");

Günlükleri etkinleştirme hakkında daha ayrıntılı yönergeler için @azure/günlükçü paketi belgelerine bakabilirsiniz.

Önkoşullar

Bu kılavuzda, hızlı başlangıç sayfasında belirtilen adımları başarıyla izlediğiniz varsayılır . Diğer bir deyişle:

  • bir Görüntü İşleme kaynağı oluşturdunuz ve bir anahtar ve uç nokta URL'si edindiniz.
  • Hizmete başarıyla bir curl.exe çağrı yaptınız (veya alternatif bir araç kullandınız). Çağrıyı curl.exe buradaki örneklere göre değiştirirsiniz.

Hizmette kimlik doğrulaması

Görüntü Analizi hizmetinde kimlik doğrulaması yapmak için bir Görüntü İşleme anahtarı ve uç nokta URL'si gerekir.

İpucu

Anahtarı doğrudan kodunuz içinde eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi daha fazla kimlik doğrulama seçeneği için Azure AI hizmetleri güvenlik makalesine bakın.

SDK örneği, ortam değişkenlerini VISION_KEY ve VISION_ENDPOINT anahtarınızla uç noktanızı tanımladığınız varsayılır.

Kimlik doğrulaması, HTTP istek üst bilgisi Ocp-Apim-Subscription-Key eklenerek ve görüntü işleme anahtarınıza ayarlanarak yapılır. Çağrısı URL'sine <endpoint>/computervision/imageanalysis:analyze?api-version=2024-02-01yapılır; burada <endpoint> benzersiz görüntü işleme uç noktası URL'nizdir. Analiz seçeneklerinize göre sorgu dizeleri eklersiniz.

Analiz etmek için görüntüyü seçin

Bu kılavuzdaki kod, URL tarafından başvuruda bulunan uzak görüntüleri kullanır. Görüntü Analizi özelliklerinin tüm özelliklerini görmek için farklı görüntüleri kendiniz denemek isteyebilirsiniz.

Uzak görüntüyü analiz ederken, istek gövdesini şu şekilde biçimlendirerek görüntünün URL'sini belirtirsiniz: {"url":"https://learn.microsoft.com/azure/cognitive-services/computer-vision/images/windows-kitchen.jpg"}. İçerik Türü olmalıdırapplication/json.

Yerel görüntüyü analiz etmek için ikili görüntü verilerini HTTP isteği gövdesine koyarsınız. İçerik Türü veya multipart/form-dataolmalıdırapplication/octet-stream.

Analiz seçeneklerini belirleme

Standart modeli kullanırken görsel özellikleri seçme

Analysis 4.0 API'si, hizmetin tüm görüntü analizi özelliklerine erişmenizi sağlar. Kendi kullanım örneğinize göre hangi işlemlerin gerçekleştirileceğini seçin. Her özelliğin açıklaması için genel bakışa bakın. Bu bölümdeki örnek, kullanılabilir tüm görsel özellikleri ekler, ancak pratik kullanım için büyük olasılıkla daha az sayıda görsele ihtiyacınız vardır.

'Captions' ve 'DenseCaptions' görsel özellikleri yalnızca şu Azure bölgelerinde desteklenir: Doğu ABD, Orta Fransa, Orta Kore, Kuzey Avrupa, Güneydoğu Asya, Batı Avrupa, Batı ABD.

Not

REST API, Akıllı Ürünler ve Akıllı Ürün En Boy Oranları terimlerini kullanır. SDK, Kırpma Önerileri ve Kırpma En Boy Oranları terimlerini kullanır. Her ikisi de aynı hizmet işlemine başvurur. Benzer şekilde REST API, Optik Karakter Tanıma (OCR) kullanarak görüntüdeki metinleri algılamak için Okuma terimini kullanırken, SDK aynı işlem için Metin terimini kullanır.

Analysis 4.0 API'sinin URL sorgu parametrelerini ayarlayarak hangi özellikleri kullanmak istediğinizi belirtebilirsiniz. Parametrenin virgülle ayrılmış birden çok değeri olabilir.

URL parametresi Value Açıklama
features read Görüntüdeki görünür metni okur ve bunu yapılandırılmış JSON verileri olarak verir.
features caption Desteklenen dillerde tam bir tümceyle görüntü içeriğini açıklar.
features denseCaptions En fazla 10 belirgin görüntü bölgesi için ayrıntılı başlık oluşturur.
features smartCrops İlgi alanını koruyarak görüntüyü istenen en boy oranına kırpacak dikdörtgen koordinatlarını bulur.
features objects Yaklaşık konum dahil olmak üzere bir görüntüdeki çeşitli nesneleri algılar. Nesneler bağımsız değişkeni yalnızca İngilizce kullanılabilir.
features tags Görüntüyü, görüntü içeriğiyle ilgili sözcüklerin ayrıntılı bir listesiyle etiketler.
features people Yaklaşık konumlar dahil olmak üzere görüntülerde görünen kişileri algılar.

Doldurulmuş bir URL şöyle görünebilir:

<endpoint>/computervision/imageanalysis:analyze?api-version=2024-02-01&features=tags,read,caption,denseCaptions,smartCrops,objects,people

Özel model kullanırken model adını ayarlama

Özel eğitilmiş bir modelle görüntü analizi de yapabilirsiniz. Model oluşturmak ve eğitmek için bkz . Özel Görüntü Analizi modeli oluşturma. Modeliniz eğitildikten sonra tek ihtiyacınız olan modelin adıdır. Özel bir model kullanıyorsanız görsel özellikleri belirtmeniz gerekmez.

Özel model kullanmak için özellikler sorgu parametresini kullanmayın. Bunun yerine parametresini model-name burada gösterildiği gibi modelinizin adına ayarlayın. değerini özel model adınızla değiştirin MyCustomModelName .

<endpoint>/computervision/imageanalysis:analyze?api-version=2023-02-01&model-name=MyCustomModelName

Dilleri belirtme

Döndürülen verilerin dilini belirtebilirsiniz. Dil isteğe bağlıdır ve varsayılanı İngilizce'dir. Desteklenen dil kodlarının listesi ve her dil için desteklenen görsel özelliklerin listesi için bkz . Dil desteği .

Dil seçeneği yalnızca standart modeli kullandığınızda geçerlidir.

Aşağıdaki URL sorgu parametresi dili belirtir. Varsayılan değer şudur: en.

URL parametresi Value Açıklama
language en İngilizce
language es İspanyolca
language ja Japonca
language pt Portekizce (Portekiz)
language zh Basitleştirilmiş Çince

Doldurulmuş bir URL şöyle görünebilir:

<endpoint>/computervision/imageanalysis:analyze?api-version=2024-02-01&features=caption&language=en

Cinsiyete göre bağımsız başlık seçin

başlık veya yoğun başlık ayıklarsanız cinsiyet açısından bağımsız başlık isteyebilirsiniz. Cinsiyetsiz başlık isteğe bağlıdır ve varsayılan değer cinsiyet başlık olarak kabul edilir. Örneğin, İngilizce'de cinsiyete bağlı olmayan başlık seçtiğinizde, kadın veya erkek gibi terimler kişi ile değiştirilir ve erkek veya kız çocuk ile değiştirilir.

Cinsiyetsiz başlık seçeneği yalnızca standart modeli kullandığınızda geçerlidir.

İsteğe bağlı sorgu dizesini gender-neutral-caption veya truefalse (varsayılan) değerleriyle ekleyin.

Doldurulmuş bir URL şöyle görünebilir:

<endpoint>/computervision/imageanalysis:analyze?api-version=2024-02-01&features=caption&gender-neutral-caption=true

Akıllı kırpma en boy oranlarını seçme

Hedef kırpma genişliği yüksekliğe bölünerek en boy oranı hesaplanır. Desteklenen değerler 0,75 ile 1,8 (dahil) arasındadır. Bu özelliğin ayarlanması yalnızca görsel özellik listesinin bir parçası olarak VisualFeatures.SmartCrops seçildiğinde geçerlidir. VisualFeatures.SmartCrops'u seçerseniz ancak en boy oranlarını belirtmezseniz, hizmet uygun gördüğü en boy oranına sahip bir kırpma önerisi döndürür. Bu durumda en boy oranı 0,5 ile 2,0 (dahil) arasındadır.

Akıllı kırpma yönü rasyonları yalnızca standart modeli kullandığınızda geçerlidir.

bir veya daha fazla en boy oranı virgülle ayrılmış olarak isteğe bağlı sorgu dizesini smartcrops-aspect-ratiosekleyin.

Doldurulmuş bir URL şöyle görünebilir:

<endpoint>/computervision/imageanalysis:analyze?api-version=2024-02-01&features=smartCrops&smartcrops-aspect-ratios=0.8,1.2

Hizmetten sonuç alma

Standart modeli kullanarak sonuç alma

Bu bölümde, standart modeli kullanarak hizmete nasıl analiz çağrısı yapacağınızı ve sonuçları nasıl alabileceğiniz gösterilir.

Hizmet bir 200 HTTP yanıtı döndürür ve gövde döndürülen verileri JSON dizesi biçiminde içerir. Aşağıdaki metin bir JSON yanıtı örneğidir.

{
    "modelVersion": "string",
    "captionResult": {
      "text": "string",
      "confidence": 0.0
    },
    "denseCaptionsResult": {
      "values": [
        {
          "text": "string",
          "confidence": 0.0,
          "boundingBox": {
            "x": 0,
            "y": 0,
            "w": 0,
            "h": 0
          }
        }
      ]
    },
    "metadata": {
      "width": 0,
      "height": 0
    },
    "tagsResult": {
      "values": [
        {
          "name": "string",
          "confidence": 0.0
        }
      ]
    },
    "objectsResult": {
      "values": [
        {
          "id": "string",
          "boundingBox": {
            "x": 0,
            "y": 0,
            "w": 0,
            "h": 0
          },
          "tags": [
            {
              "name": "string",
              "confidence": 0.0
            }
          ]
        }
      ]
    },
    "readResult": {
      "blocks": [
        {
          "lines": [
            {
              "text": "string",
              "boundingPolygon": [
                {
                  "x": 0,
                  "y": 0
                },
                {
                    "x": 0,
                    "y": 0
                },
                {
                    "x": 0,
                    "y": 0
                },
                {
                    "x": 0,
                    "y": 0
                }
              ],
              "words": [
                {
                  "text": "string",
                  "boundingPolygon": [
                    {
                        "x": 0,
                        "y": 0
                    },
                    {
                        "x": 0,
                        "y": 0
                    },
                    {
                        "x": 0,
                        "y": 0
                    },
                    {
                        "x": 0,
                        "y": 0
                    }
                  ],
                  "confidence": 0.0
                }
              ]
            }
          ]
        }
      ]
    },
    "smartCropsResult": {
      "values": [
        {
          "aspectRatio": 0.0,
          "boundingBox": {
            "x": 0,
            "y": 0,
            "w": 0,
            "h": 0
          }
        }
      ]
    },
    "peopleResult": {
      "values": [
        {
          "boundingBox": {
            "x": 0,
            "y": 0,
            "w": 0,
            "h": 0
          },
          "confidence": 0.0
        }
      ]
    }
  }

Hata kodları

Hata oluştuğunda, Görüntü Analizi hizmeti yanıtı bir hata kodu ve hata iletisi içeren bir JSON yükü içerir. Ayrıca, ve iç hata kodu ve iletisi biçimindeki diğer ayrıntıları da içerebilir. Örneğin:

{
    "error":
    {
        "code": "InvalidRequest",
        "message": "Analyze query is invalid.",
        "innererror":
        {
            "code": "NotSupportedVisualFeature",
            "message": "Specified feature type is not valid"
        }
    }
}

Yaygın hataların ve bunların nedenlerinin listesi aşağıdadır. Liste öğeleri aşağıdaki biçimde sunulur:

  • HTTP yanıt kodu
    • JSON yanıtında hata kodu ve ileti
      • [İsteğe bağlı] JSON yanıtında iç hata kodu ve ileti

Sık karşılaşılan hataların listesi:

  • 400 Bad Request
    • InvalidRequest - Image URL is badly formatted or not accessible. Resim URL'sinin geçerli ve genel olarak erişilebilir olduğundan emin olun.
    • InvalidRequest - The image size is not allowed to be zero or larger than 20971520 bytes. Resmi sıkıştırarak ve/veya yeniden boyutlandırarak resmin boyutunu küçültün ve isteğinizi yeniden gönderin.
    • InvalidRequest - The feature 'Caption' is not supported in this region. Özellik yalnızca belirli Azure bölgelerinde desteklenir. Desteklenen Azure bölgeleri listesi için hızlı başlangıç önkoşulları bölümüne bakın.
    • InvalidRequest - The provided image content type ... is not supported. İstekteki HTTP üst bilgisi content-Type izin verilen bir tür değildir:
      • Resim URL'si için İçerik Türüapplication/json
      • İkili görüntü verileri için İçerik Türü veya olmalıdır application/octet-streammultipart/form-data
    • InvalidRequest - Either 'features' or 'model-name' needs to be specified in the query parameter.
    • InvalidRequest - Image format is not valid
    • InvalidRequest - Analyze query is invalid
      • NotSupportedVisualFeature - Specified feature type is not valid. Özellikler sorgu dizesinin geçerli bir değere sahip olduğundan emin olun.
      • NotSupportedLanguage - The input language is not supported. Dil sorgu dizesinin, aşağıdaki tabloya göre seçili görsel özelliği için geçerli bir değere sahip olduğundan emin olun.
      • BadArgument - 'smartcrops-aspect-ratios' aspect ratio is not in allowed range [0.75 to 1.8]
  • 401 PermissionDenied
    • 401 - Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource.
  • 404 Resource Not Found
    • 404 - Resource not found. Hizmet, sorgu dizesi tarafından model-name sağlanan ada göre özel modeli bulamadı.

Sonraki adımlar