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
- 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 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
- 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ştur
Resim çözümleme
ile analyze_image
belirli ö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.description
değ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_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 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_domain
bir 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_image
bir 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 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. 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_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ş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.
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