Azure Cognitive Services Computer Vision Pythonhoz készült SDK
A Computer Vision szolgáltatás a fejlesztők számára hozzáférést biztosít speciális képfeldolgozó és információt visszaadó algoritmusokhoz. Computer Vision algoritmusok különböző módokon elemzik a képek tartalmát a kívánt vizuális funkcióktól függően.
Az alkalmazásban a Computer Vision a következőket teheti:
- Képek elemzése eredmények kinyeréséhez
- Szöveg kinyerése képekből
- Miniatűrök létrehozása
További dokumentációt keres?
Előfeltételek
- Azure-előfizetés – Ingyenes fiók létrehozása
- Azure Computer Vision-erőforrás
- Python 3.6+
Ha Computer Vision API-fiókra van szüksége, létrehozhat egyet ezzel az Azure CLI-paranccsal:
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
Telepítés
Telepítse az Azure Cognitive Services Computer Vision SDK-t pip használatával, opcionálisan egy virtuális környezetben.
Virtuális környezet konfigurálása (nem kötelező)
Bár nem szükséges, az alaprendszert és az Azure SDK-környezeteket elkülönítheti egymástól, ha virtuális környezetet használ. Futtassa a következő parancsokat a venv virtuális környezetének konfigurálásához és megadásához, például cogsrv-vision-env
:
python3 -m venv cogsrv-vision-env
source cogsrv-vision-env/bin/activate
Az SDK telepítése
Telepítse az Azure Cognitive Services Computer Vision Pythonhoz készült SDK-csomagota pip használatával:
pip install azure-cognitiveservices-vision-computervision
Hitelesítés
A Computer Vision-erőforrás létrehozása után szüksége lesz a régióra és annak egyik fiókkulcsára az ügyfélobjektum példányosításához.
Ezeket az értékeket a ComputerVisionClient ügyfélobjektum példányának létrehozásakor használja.
Hitelesítő adatok lekérése
Az alábbi Azure CLI-kódrészlettel feltölthet két környezeti változót a Computer Vision fiókrégióval és annak egyik kulcsával (ezeket az értékeket a Azure Portal is megtalálja). A kódrészlet a Bash-felülethez van formázva.
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)
Ügyfél létrehozása
Miután kitöltötte a és ACCOUNT_KEY
a ACCOUNT_REGION
környezeti változókat, létrehozhatja a ComputerVisionClient ügyfélobjektumot.
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
)
Használat
Miután inicializált egy ComputerVisionClient ügyfélobjektumot, a következőket teheti:
- Kép elemzése: Elemezhet egy képet bizonyos funkciók, például arcok, színek, címkék alapján.
- Miniatűrök létrehozása: Hozzon létre egy egyéni JPEG-képet, amelyet az eredeti kép miniatűrjeként használhat.
- Kép leírásának lekérése: A kép leírásának lekérése a tárgytartománya alapján.
A szolgáltatással kapcsolatos további információkért lásd: Mi a Computer Vision?.
Példák
A következő szakaszok számos kódrészletet biztosítanak, amelyek a leggyakoribb Computer Vision feladatokat ismertetik, többek között:
- Kép elemzése
- Tárgytartománylista lekérése
- Kép elemzése tartomány szerint
- Kép szöveges leírásának lekérése
- Kézzel írt szöveg lekérése képről
- Miniatűr létrehozása
Rendszerkép elemzése
A használatával elemezhet egy képet bizonyos funkciókhoz analyze_image
. visual_features
A tulajdonság használatával beállíthatja a képen végrehajtandó elemzési típusokat. A gyakori értékek a következők: VisualFeatureTypes.tags
és 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)
Tárgytartománylista lekérése
Tekintse át a kép elemzéséhez használt tárgytartományokat a használatával list_models
. A rendszer ezeket a tartományneveket használja a képek tartományonkénti elemzésekor. Egy tartományra példa: landmarks
.
models = client.list_models()
for x in models.models_property:
print(x)
Kép elemzése tartomány szerint
A rendszerképeket tárgytartomány szerint elemezheti a következővel: analyze_image_by_domain
. A megfelelő tartománynév használatához kérje le a támogatott tárgytartományok listáját .
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"])
Kép szöveges leírásának lekérése
A kép nyelvalapú szövegleírását a használatával kaphatja describe_image
meg. Kérjen több leírást a max_description
tulajdonsággal, ha szövegelemzést végez a képhez társított kulcsszavakhoz. A következő kép szöveges leírására példák: a train crossing a bridge over a body of water
, a large bridge over a body of water
és 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)
Szöveg lekérése képről
A képekről bármilyen kézzel írt vagy nyomtatott szöveget lekérhet. Ehhez két hívásra van szükség az SDK-hoz: read
és get_read_result
. Az olvasási hívás aszinkron. A get_read_result hívás eredményében ellenőriznie kell, hogy az első hívás befejeződött-e OperationStatusCodes
a szöveges adatok kinyerése előtt. Az eredmények közé tartozik a szöveg, valamint a szöveg határolókeretének koordinátái.
# 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)
Miniatűr létrehozása
A kép miniatűrje (JPG) a használatával generate_thumbnail
hozható létre. A miniatűrnek nem kell ugyanolyan arányban lennie, mint az eredeti képnek.
Ez a példa a Pillow csomagot használja az új miniatűrkép helyi mentéséhez.
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')
Hibaelhárítás
Általános kérdések
Amikor a ComputerVisionClient ügyfélobjektumot a Python SDK használatával használja, a ComputerVisionErrorException
osztály a hibák visszaadására szolgál. A szolgáltatás által visszaadott hibák megegyeznek a REST API-kérésekhez visszaadott HTTP-állapotkódokkal.
Ha például érvénytelen kulccsal próbál elemezni egy képet, a 401
rendszer hibát ad vissza. Az alábbi kódrészletben a rendszer a kivétel elfogásával és a hibával kapcsolatos további információk megjelenítésével kezeli a hibát.
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
Átmeneti hibák kezelése újrapróbálkozásokkal
A ComputerVisionClient ügyfél használata során átmeneti hibákat tapasztalhat, amelyeket a szolgáltatás által kikényszerített sebességkorlátozások vagy más átmeneti problémák, például hálózati kimaradások okoznak. Az ilyen típusú hibák kezelésével kapcsolatos információkért lásd: Újrapróbálkozási minta a felhőtervezési minták útmutatójában és a kapcsolódó áramkör-megszakító minta.
Következő lépések
További mintakód
Az SDK GitHub-adattárában számos Computer Vision Python SDK-minta érhető el. Ezek a minták példakódot biztosítanak a Computer Vision használata során gyakran előforduló további forgatókönyvekhez:
További dokumentáció
Az Computer Vision szolgáltatás részletesebb dokumentációját az Azure Computer Vision docs.microsoft.com dokumentációjában találja.
Azure SDK for Python