Share via


Python için Azure Bilişsel Hizmetler Görüntü İşleme SDK'sı

Görüntü İşleme hizmeti geliştiricilerin görüntü işlemeye ve bilgi döndürmeye yönelik gelişmiş algoritmalara erişmesini sağlar. Görüntü İşleme algoritmaları, ilgilendiğiniz görsel özelliklere bağlı olarak görüntünün içeriğini farklı şekillerde analiz eder.

Uygulamanızda Görüntü İşleme kullanarak:

  • İçgörü edinmek için görüntüleri analiz etme
  • Görüntülerdeki metinleri ayıklama
  • Küçük resim oluşturma

Daha fazla belge mi arıyorsunuz?

Önkoşullar

Görüntü İşleme API hesabına ihtiyacınız varsa şu Azure CLI komutuyla bir hesap oluşturabilirsiniz:

RES_REGION=westeurope
RES_GROUP=<resourcegroup-name>
ACCT_NAME=<computervision-account-name>

az cognitiveservices account create \
    --resource-group $RES_GROUP \
    --name $ACCT_NAME \
    --location $RES_REGION \
    --kind ComputerVision \
    --sku S1 \
    --yes

Yükleme

Azure Bilişsel Hizmetler Görüntü İşleme SDK'sını isteğe bağlı olarak bir sanal ortamdapip ile yükleyin.

Sanal ortam yapılandırma (isteğe bağlı)

Gerekli olmasa da, bir sanal ortam kullanıyorsanız temel sisteminizi ve Azure SDK ortamlarınızı birbirinden yalıtılmış halde tutabilirsiniz. Yapılandırmak için aşağıdaki komutları yürüterek venv ile bir sanal ortam girin, örneğin cogsrv-vision-env:

python3 -m venv cogsrv-vision-env
source cogsrv-vision-env/bin/activate

SDK Yükleme

Pip ile Python paketi için Azure Bilişsel Hizmetler Görüntü İşleme SDK'sını yükleyin:

pip install azure-cognitiveservices-vision-computervision

Kimlik Doğrulaması

Görüntü İşleme kaynağınızı oluşturduktan sonra, istemci nesnesinin örneğini oluşturmak için bölgesine ve hesap anahtarlarından birine ihtiyacınız olur.

ComputerVisionClient istemci nesnesinin örneğini oluştururken bu değerleri kullanın.

Kimlik bilgilerini alma

İki ortam değişkenini Görüntü İşleme hesap bölgesi ve anahtarlarından biriyle doldurmak için aşağıdaki Azure CLI kod parçacığını kullanın (bu değerleri Azure portal de bulabilirsiniz). Kod parçacığı Bash kabuğu için biçimlendirilir.

RES_GROUP=<resourcegroup-name>
ACCT_NAME=<computervision-account-name>

export ACCOUNT_REGION=$(az cognitiveservices account show \
    --resource-group $RES_GROUP \
    --name $ACCT_NAME \
    --query location \
    --output tsv)

export ACCOUNT_KEY=$(az cognitiveservices account keys list \
    --resource-group $RES_GROUP \
    --name $ACCT_NAME \
    --query key1 \
    --output tsv)

İstemci oluşturma

ve ACCOUNT_KEY ortam değişkenlerini doldurduktan ACCOUNT_REGION sonra ComputerVisionClient istemci nesnesini oluşturabilirsiniz.

from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from azure.cognitiveservices.vision.computervision.models import VisualFeatureTypes
from msrest.authentication import CognitiveServicesCredentials

import os
region = os.environ['ACCOUNT_REGION']
key = os.environ['ACCOUNT_KEY']

credentials = CognitiveServicesCredentials(key)
client = ComputerVisionClient(
    endpoint="https://" + region + ".api.cognitive.microsoft.com/",
    credentials=credentials
)

Kullanım

Bir ComputerVisionClient istemci nesnesi başlatıldıktan sonra şunları yapabilirsiniz:

  • Görüntüyü analiz etme: Yüzler, renkler, etiketler gibi belirli özellikler için bir görüntüyü analiz edebilirsiniz.
  • Küçük resimler oluşturma: Özgün görüntünün küçük resmi olarak kullanılacak özel bir JPEG görüntüsü oluşturun.
  • Resmin açıklamasını alma: Resmin konu etki alanına göre açıklamasını alın.

Bu hizmet hakkında daha fazla bilgi için bkz. Görüntü İşleme nedir?.

Örnekler

Aşağıdaki bölümlerde, en yaygın Görüntü İşleme görevlerinden bazılarını kapsayan çeşitli kod parçacıkları sağlanır:

Resim çözümleme

ile analyze_imagebelirli özellikler için bir görüntüyü analiz edebilirsiniz. visual_features Görüntüde gerçekleştirilecek çözümleme türlerini ayarlamak için özelliğini kullanın. Yaygın değerler ve VisualFeatureTypes.descriptiondeğerleridirVisualFeatureTypes.tags.

url = "https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Broadway_and_Times_Square_by_night.jpg/450px-Broadway_and_Times_Square_by_night.jpg"

image_analysis = client.analyze_image(url,visual_features=[VisualFeatureTypes.tags])

for tag in image_analysis.tags:
    print(tag)

Konu etki alanı listesini alma

ile list_modelsgörüntünüzü analiz etmek için kullanılan konu etki alanlarını gözden geçirin. Bu etki alanı adları , bir görüntüyü etki alanına göre analiz ederken kullanılır. Etki alanına örnek olarak verilmiştir landmarks.

models = client.list_models()

for x in models.models_property:
    print(x)

Bir görüntüyü etki alanına göre analiz etme

ile analyze_image_by_domainbir görüntüyü konu etki alanına göre analiz edebilirsiniz. Doğru etki alanı adını kullanmak için desteklenen konu etki alanlarının listesini alın.

domain = "landmarks"
url = "https://images.pexels.com/photos/338515/pexels-photo-338515.jpeg"
language = "en"

analysis = client.analyze_image_by_domain(domain, url, language)

for landmark in analysis.result["landmarks"]:
    print(landmark["name"])
    print(landmark["confidence"])

Resmin metin açıklamasını alma

ile describe_imagebir görüntünün dil tabanlı metin açıklamasını alabilirsiniz. Resimle ilişkilendirilmiş anahtar sözcükler için metin analizi yapıyorsanız özelliğiyle max_description birkaç açıklama isteyin. Aşağıdaki görüntü için metin açıklamasına örnek olarak a train crossing a bridge over a body of water, a large bridge over a body of waterve a train crossing a bridge over a large body of waterverilebilir.

domain = "landmarks"
url = "http://www.public-domain-photos.com/free-stock-photos-4/travel/san-francisco/golden-gate-bridge-in-san-francisco.jpg"
language = "en"
max_descriptions = 3

analysis = client.describe_image(url, max_descriptions, language)

for caption in analysis.captions:
    print(caption.text)
    print(caption.confidence)

Resimden metin alma

Bir görüntüden el yazısı veya yazdırılan metinleri alabilirsiniz. Bu, SDK'ya iki çağrı gerektirir: read ve get_read_result. Okuma çağrısı zaman uyumsuzdur. get_read_result çağrısının sonuçlarında, metin verilerini ayıklamadan önce ilk çağrının ile OperationStatusCodes tamamlandığını denetlemeniz gerekir. Sonuçlar hem metni hem de metnin sınırlayıcı kutusu koordinatlarını içerir.

# import models
from azure.cognitiveservices.vision.computervision.models import OperationStatusCodes

url = "https://github.com/Azure-Samples/cognitive-services-python-sdk-samples/raw/master/samples/vision/images/make_things_happen.jpg"
raw = True
numberOfCharsInOperationId = 36

# SDK call
rawHttpResponse = client.read(url, language="en", raw=True)

# Get ID from returned headers
operationLocation = rawHttpResponse.headers["Operation-Location"]
idLocation = len(operationLocation) - numberOfCharsInOperationId
operationId = operationLocation[idLocation:]

# SDK call
result = client.get_read_result(operationId)

# Get data
if result.status == OperationStatusCodes.succeeded:

    for line in result.analyze_result.read_results[0].lines:
        print(line.text)
        print(line.bounding_box)

Küçük resim oluştur

ile generate_thumbnailbir görüntünün küçük resmini (JPG) oluşturabilirsiniz. Küçük resmin özgün görüntüyle aynı oranlarda olması gerekmez.

Bu örnekte, yeni küçük resim görüntüsünü yerel olarak kaydetmek için Pillow paketi kullanılır.

from PIL import Image
import io

width = 50
height = 50
url = "http://www.public-domain-photos.com/free-stock-photos-4/travel/san-francisco/golden-gate-bridge-in-san-francisco.jpg"

thumbnail = client.generate_thumbnail(width, height, url)

for x in thumbnail:
    image = Image.open(io.BytesIO(x))

image.save('thumbnail.jpg')

Sorun giderme

Genel

Python SDK'sını kullanarak ComputerVisionClient istemci nesnesiyle etkileşimde bulunursanız, ComputerVisionErrorException sınıf hataları döndürmek için kullanılır. Hizmet tarafından döndürülen hatalar, REST API istekleri için döndürülen aynı HTTP durum kodlarına karşılık gelir.

Örneğin, geçersiz anahtara sahip bir görüntüyü analiz etmeye çalışırsanız bir 401 hata döndürülür. Aşağıdaki kod parçacığında hata, özel durum yakalanarak ve hata hakkında ek bilgiler görüntülenerek düzgün bir şekilde işlenir.


domain = "landmarks"
url = "http://www.public-domain-photos.com/free-stock-photos-4/travel/san-francisco/golden-gate-bridge-in-san-francisco.jpg"
language = "en"
max_descriptions = 3

try:
    analysis = client.describe_image(url, max_descriptions, language)

    for caption in analysis.captions:
        print(caption.text)
        print(caption.confidence)
except HTTPFailure as e:
    if e.status_code == 401:
        print("Error unauthorized. Make sure your key and region are correct.")
    else:
        raise

Yeniden denemelerle geçici hataları işleme

ComputerVisionClient istemcisiyle çalışırken, hizmet tarafından uygulanan hız sınırları veya ağ kesintileri gibi diğer geçici sorunlardan kaynaklanan geçici hatalarla karşılaşabilirsiniz. Bu tür hataları işleme hakkında bilgi için Bulut Tasarım Desenleri kılavuzundaki yeniden deneme düzeni ve ilgili Devre Kesici düzeni bölümüne bakın.

Sonraki adımlar

Daha fazla örnek kod

SDK'nın GitHub deposunda kullanabileceğiniz çeşitli Görüntü İşleme Python SDK örnekleri vardır. Bu örnekler, Görüntü İşleme çalışırken sık karşılaşılan ek senaryolar için örnek kod sağlar:

Diğer belgeler

Görüntü İşleme hizmeti hakkında daha kapsamlı belgeler için docs.microsoft.com ile ilgili Azure Görüntü İşleme belgelerine bakın.