vws-python¶
Installation¶
$ pip install vws-python
This is tested on Python 3.13+.
Get in touch with adamdangoor@gmail.com if you would like to use this with another language.
Usage¶
See the API Reference for full usage details.
"""Add a target to VWS and then query it."""
import os
import pathlib
import uuid
from vws import VWS, CloudRecoService
server_access_key = os.environ["VWS_SERVER_ACCESS_KEY"]
server_secret_key = os.environ["VWS_SERVER_SECRET_KEY"]
client_access_key = os.environ["VWS_CLIENT_ACCESS_KEY"]
client_secret_key = os.environ["VWS_CLIENT_SECRET_KEY"]
vws_client = VWS(
server_access_key=server_access_key,
server_secret_key=server_secret_key,
)
cloud_reco_client = CloudRecoService(
client_access_key=client_access_key,
client_secret_key=client_secret_key,
)
name = "my_image_name_" + uuid.uuid4().hex
image = pathlib.Path("high_quality_image.jpg")
with image.open(mode="rb") as my_image_file:
target_id = vws_client.add_target(
name=name,
width=1,
image=my_image_file,
active_flag=True,
application_metadata=None,
)
vws_client.wait_for_target_processed(target_id=target_id)
with image.open(mode="rb") as my_image_file:
matching_targets = cloud_reco_client.query(image=my_image_file)
assert matching_targets[0].target_id == target_id
Testing¶
To write unit tests for code which uses this library, without using your Vuforia quota, you can use the VWS Python Mock tool:
$ pip install vws-python-mock
"""Add a target to VWS and then query it."""
import pathlib
from mock_vws import MockVWS
from mock_vws.database import VuforiaDatabase
from vws import VWS, CloudRecoService
with MockVWS() as mock:
database = VuforiaDatabase()
mock.add_database(database=database)
vws_client = VWS(
server_access_key=database.server_access_key,
server_secret_key=database.server_secret_key,
)
cloud_reco_client = CloudRecoService(
client_access_key=database.client_access_key,
client_secret_key=database.client_secret_key,
)
image = pathlib.Path("high_quality_image.jpg")
with image.open(mode="rb") as my_image_file:
target_id = vws_client.add_target(
name="example_image_name",
width=1,
image=my_image_file,
application_metadata=None,
active_flag=True,
)
vws_client.wait_for_target_processed(target_id=target_id)
matching_targets = cloud_reco_client.query(image=my_image_file)
assert matching_targets[0].target_id == target_id
There are some differences between the mock and the real Vuforia. See https://vws-python.github.io/vws-python-mock/differences-to-vws for details.
Reference¶
- API Reference
VWSCloudRecoServiceDatabaseSummaryReportDatabaseSummaryReport.active_imagesDatabaseSummaryReport.current_month_recosDatabaseSummaryReport.failed_imagesDatabaseSummaryReport.inactive_imagesDatabaseSummaryReport.nameDatabaseSummaryReport.previous_month_recosDatabaseSummaryReport.processing_imagesDatabaseSummaryReport.reco_thresholdDatabaseSummaryReport.request_quotaDatabaseSummaryReport.request_usageDatabaseSummaryReport.target_quotaDatabaseSummaryReport.total_recos
TargetStatusesTargetSummaryReportTargetSummaryReport.statusTargetSummaryReport.database_nameTargetSummaryReport.target_nameTargetSummaryReport.upload_dateTargetSummaryReport.active_flagTargetSummaryReport.tracking_ratingTargetSummaryReport.total_recosTargetSummaryReport.current_month_recosTargetSummaryReport.previous_month_recos
TargetRecordTargetDataQueryResultTargetStatusAndRecordCloudRecoIncludeTargetDataResponse
- Exceptions
- Base exceptions
- VWS exceptions
UnknownTargetErrorFailErrorBadImageErrorAuthenticationFailureErrorRequestQuotaReachedErrorTargetStatusProcessingErrorDateRangeErrorTargetQuotaReachedErrorProjectSuspendedErrorProjectHasNoAPIAccessErrorProjectInactiveErrorMetadataTooLargeErrorRequestTimeTooSkewedErrorTargetNameExistErrorImageTooLargeErrorTargetStatusNotSuccessErrorTooManyRequestsError
- CloudRecoService exceptions
- Custom exceptions
- Contributing to vws-python
- Release Process
- Changelog