Azure Cognitive Services Počítačové zpracování obrazu SDK pro Python
Služba počítačového zpracování obrazu umožňuje vývojářům používat pokročilé algoritmy, které zpracovávají obrázky a vrací informace. Počítačové zpracování obrazu algoritmy analyzují obsah obrázku různými způsoby v závislosti na vizuálních funkcích, které vás zajímají.
Pomocí Počítačové zpracování obrazu v aplikaci můžete:
- Analýza obrázků za účelem získání přehledu
- Extrakce textu z obrázků
- Generovat miniatury
Hledáte další dokumentaci?
- Referenční dokumentace k sadě SDK
- Dokumentace ke službám Cognitive Services Počítačové zpracování obrazu
Požadavky
- Předplatné Azure – Vytvoření bezplatného účtu
- Prostředek Azure Počítačové zpracování obrazu
- Python 3.6 nebo novější
Pokud potřebujete účet rozhraní API Počítačové zpracování obrazu, můžete si ho vytvořit pomocí tohoto příkazu Azure CLI:
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
Instalace
Nainstalujte sadu Azure Cognitive Services Počítačové zpracování obrazu SDK pomocí nástroje pip, volitelně ve virtuálním prostředí.
Konfigurace virtuálního prostředí (volitelné)
I když to není potřeba, můžete zachovat vzájemnou izolaci základního systému a prostředí sady Azure SDK, pokud používáte virtuální prostředí. Spusťte následující příkazy pro konfiguraci a pak zadejte virtuální prostředí s venv, například cogsrv-vision-env
:
python3 -m venv cogsrv-vision-env
source cogsrv-vision-env/bin/activate
Instalace sady SDK
Nainstalujte balíček Azure Cognitive Services Počítačové zpracování obrazu SDK pro Python pomocí příkazu pip:
pip install azure-cognitiveservices-vision-computervision
Authentication
Po vytvoření prostředku Počítačové zpracování obrazu potřebujete jeho oblast a jeden z klíčů účtu k vytvoření instance objektu klienta.
Tyto hodnoty použijte při vytváření instance objektu klienta ComputerVisionClient .
Získání přihlašovacích údajů
Pomocí následujícího fragmentu kódu Azure CLI naplňte dvě proměnné prostředí oblastí účtu Počítačové zpracování obrazu a jedním z jejích klíčů (tyto hodnoty najdete také v Azure Portal). Fragment kódu je naformátovaný pro prostředí Bash.
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)
Vytvoření klienta
Po naplnění ACCOUNT_REGION
proměnných prostředí a ACCOUNT_KEY
můžete vytvořit objekt klienta ComputerVisionClient .
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
)
Využití
Po inicializaci objektu klienta ComputerVisionClient můžete:
- Analýza obrázku: Na obrázku můžete analyzovat určité vlastnosti, jako jsou tváře, barvy nebo značky.
- Generovat miniatury: Vytvořte vlastní obrázek JPEG, který se použije jako miniatura původního obrázku.
- Získání popisu obrázku: Získejte popis obrázku na základě domény předmětu.
Další informace o této službě najdete v tématu Co je Počítačové zpracování obrazu?.
Příklady
Následující části obsahují několik fragmentů kódu, které pokrývají některé z nejběžnějších úloh Počítačové zpracování obrazu, mezi které patří:
- Analýza obrázku
- Získání seznamu domén předmětu
- Analýza obrázku podle domény
- Získání textového popisu obrázku
- Získání rukou psaného textu z obrázku
- Vygenerovat miniaturu
Analýza obrázku
Pomocí nástroje můžete analyzovat určité funkce na obrázku.analyze_image
visual_features
Pomocí vlastnosti nastavte typy analýzy, které se mají na obrázku provést. Společné hodnoty jsou VisualFeatureTypes.tags
a VisualFeatureTypes.description
.
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)
Získání seznamu domén předmětu
Zkontrolujte domény předmětu použité k analýze vašeho obrázku pomocí list_models
. Tyto názvy domén se používají při analýze image podle domény. Příkladem domény je landmarks
.
models = client.list_models()
for x in models.models_property:
print(x)
Analýza obrázku podle domény
Obrázek můžete analyzovat podle domény předmětu pomocí analyze_image_by_domain
. Získejte seznam podporovaných domén předmětu , abyste mohli použít správný název domény.
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"])
Získání textového popisu obrázku
Pomocí můžete získat textový popis obrázku založený na jazyce.describe_image
Pokud provádíte analýzu textu pro klíčová slova přidružená k obrázku max_description
, požádejte o několik popisů s vlastností . Příklady textového popisu na následujícím obrázku: a train crossing a bridge over a body of water
, a large bridge over a body of water
a a train crossing a bridge over a large body of water
.
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)
Získání textu z obrázku
Z obrázku můžete získat jakýkoli ručně psaný nebo tištěný text. To vyžaduje dvě volání sady SDK: read
a get_read_result
. Volání čtení je asynchronní. Ve výsledcích volání get_read_result musíte před extrahováním OperationStatusCodes
textových dat zkontrolovat, jestli se první volání dokončilo. Výsledky zahrnují text i souřadnice ohraničujícího rámečku pro text.
# 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)
Vygenerovat miniaturu
Pomocí příkazu můžete vygenerovat miniaturu (JPG) obrázku generate_thumbnail
. Miniatura nemusí mít stejný poměr stran jako původní obrázek.
V tomto příkladu se k místnímu uložení nového obrázku miniatury používá balíček Pillow .
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')
Poradce při potížích
Obecné
Při interakci s objektem klienta ComputerVisionClient pomocí sady Python SDK ComputerVisionErrorException
se k vrácení chyb používá třída . Chyby vrácené službou odpovídají stejným stavových kódům HTTP vráceným pro požadavky rozhraní REST API.
Pokud se například pokusíte analyzovat obrázek s neplatným klíčem, 401
vrátí se chyba. V následujícím fragmentu kódu se chyba elegantně zpracuje zachycením výjimky a zobrazením dalších informací o chybě.
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
Zpracování přechodných chyb s opakováním
Při práci s klientem ComputerVisionClient můžete narazit na přechodná selhání způsobená omezeními přenosové rychlosti vynucenými službou nebo jinými přechodnými problémy, jako jsou výpadky sítě. Informace o zpracování těchto typů selhání najdete v tématu Model opakování v průvodci Vzory návrhu cloudu a souvisejícím vzorem Jistič.
Další kroky
Další vzorový kód
Několik ukázek Počítačové zpracování obrazu Python SDK je k dispozici v úložišti sady SDK Na GitHubu. Tyto ukázky poskytují ukázkový kód pro další scénáře, se kterými se při práci s Počítačové zpracování obrazu běžně setkáte:
Další dokumentace
Rozsáhlejší dokumentaci ke službě Počítačové zpracování obrazu najdete v dokumentaci k Azure Počítačové zpracování obrazu docs.microsoft.com.
Azure SDK for Python