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
VWS
CloudRecoService
DatabaseSummaryReport
DatabaseSummaryReport.active_images
DatabaseSummaryReport.current_month_recos
DatabaseSummaryReport.failed_images
DatabaseSummaryReport.inactive_images
DatabaseSummaryReport.name
DatabaseSummaryReport.previous_month_recos
DatabaseSummaryReport.processing_images
DatabaseSummaryReport.reco_threshold
DatabaseSummaryReport.request_quota
DatabaseSummaryReport.request_usage
DatabaseSummaryReport.target_quota
DatabaseSummaryReport.total_recos
TargetStatuses
TargetSummaryReport
TargetSummaryReport.status
TargetSummaryReport.database_name
TargetSummaryReport.target_name
TargetSummaryReport.upload_date
TargetSummaryReport.active_flag
TargetSummaryReport.tracking_rating
TargetSummaryReport.total_recos
TargetSummaryReport.current_month_recos
TargetSummaryReport.previous_month_recos
TargetRecord
TargetData
QueryResult
TargetStatusAndRecord
CloudRecoIncludeTargetData
Response
- Exceptions
- Base exceptions
- VWS exceptions
UnknownTargetError
FailError
BadImageError
AuthenticationFailureError
RequestQuotaReachedError
TargetStatusProcessingError
DateRangeError
TargetQuotaReachedError
ProjectSuspendedError
ProjectHasNoAPIAccessError
ProjectInactiveError
MetadataTooLargeError
RequestTimeTooSkewedError
TargetNameExistError
ImageTooLargeError
TargetStatusNotSuccessError
TooManyRequestsError
- CloudRecoService exceptions
- Custom exceptions
- Contributing to vws-python
- Release Process
- Changelog