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 şunları yapabilirsiniz:
- İç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
- Azure aboneliği - Ücretsiz hesap oluşturma
- Azure Görüntü İşleme kaynağı
- Python 3.6+
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 sistem 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 gibi cogsrv-vision-env
bir sanal ortam girin:
python3 -m venv cogsrv-vision-env
source cogsrv-vision-env/bin/activate
SDK Yükleme
Pip ile Python 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
ComputerVisionClient istemci nesnesini 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 resim 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: Konu etki alanına göre görüntünün 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ğlanmaktadır:
- Resim çözümleme
- Konu etki alanı listesini alma
- Bir görüntüyü etki alanına göre analiz etme
- Resmin metin açıklamasını alma
- Görüntüden el yazısı metin alma
- Küçük resim oluşturma
Resim çözümleme
ile analyze_image
belirli özellikler için bir görüntüyü analiz edebilirsiniz. Görüntüde visual_features
gerçekleştirilecek çözümleme türlerini ayarlamak için özelliğini kullanın. Yaygın değerler ve VisualFeatureTypes.description
'tirVisualFeatureTypes.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_models
gö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 .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
Bir analyze_image_by_domain
görüntüyü ile 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_image
bir resmin dil tabanlı metin açıklamasını alabilirsiniz. Görüntüyle max_description
ilişkili anahtar sözcükler için metin analizi yapıyorsanız özelliğiyle birlikte 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 water
ve a train crossing a bridge over a large body of water
verilebilir.
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. Bunun için SDK'ya iki çağrı yapılması gerekir: 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 ile ilk çağrının tamamlandığını OperationStatusCodes
denetlemeniz gerekir. Sonuçlar hem metni hem de metnin sınırlayıcı kutu 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şturma
ile generate_thumbnail
bir 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şime geçtiğinde, ComputerVisionErrorResponseException
hata döndürmek için sınıfı kullanılır. Hizmet tarafından döndürülen hatalar REST API istekleri için döndürülen HTTP durum kodlarıyla aynıdır.
Ö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, özel durum yakalanarak ve hata hakkında ek bilgiler görüntülenerek hata 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 yaygın olarak 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.
Azure SDK for Python
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin