The Google Cloud Vision API allows users to leverage machine learning algorithms for processing images including: image classification, face detection, text extraction, and others.
Spring Cloud GCP provides:
A Cloud Vision Template which simplifies interactions with the Cloud Vision API.
Maven coordinates, using Spring Cloud GCP BOM:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-gcp-starter-vision</artifactId> </dependency>
Gradle coordinates:
dependencies { compile group: 'org.springframework.cloud', name: 'spring-cloud-gcp-starter-vision' }
The CloudVisionTemplate
offers a simple way to use the Cloud Vision APIs with Spring Resources.
After you add the spring-cloud-gcp-starter-vision
dependency to your project, you may @Autowire
an instance of CloudVisionTemplate
to use in your code.
The CloudVisionTemplate
offers the following method for interfacing with Cloud Vision:
public AnnotateImageResponse analyzeImage(Resource imageResource, Feature.Type… featureTypes)
Parameters:
Resource imageResource
refers to the Spring Resource of the image object you wish to analyze.
The Google Cloud Vision documentation provides a list of the image types that they support.Feature.Type… featureTypes
refers to a var-arg array of Cloud Vision Features to extract from the image.
A feature refers to a kind of image analysis one wishes to perform on an image, such as label detection, OCR recognition, facial detection, etc.
One may specify multiple features to analyze within one request.
A full list of Cloud Vision Features is provided in the Cloud Vision Feature docs.Returns:
AnnotateImageResponse
contains the results of all the feature analyses that were specified in the request.
For each feature type that you provide in the request, AnnotateImageResponse
provides a getter method to get the result of that feature analysis.
For example, if you analyzed an image using the LABEL_DETECTION
feature, you would retrieve the results from the response using annotateImageResponse.getLabelAnnotationsList()
.
AnnotateImageResponse
is provided by the Google Cloud Vision libraries; please consult the RPC reference or Javadoc for more details.
Additionally, you may consult the Cloud Vision docs to familiarize yourself with the concepts and features of the API.
Image labeling refers to producing labels that describe the contents of an image. Below is a code sample of how this is done using the Cloud Vision Spring Template.
@Autowired private ResourceLoader resourceLoader; @Autowired private CloudVisionTemplate cloudVisionTemplate; public void processImage() { Resource imageResource = this.resourceLoader.getResource("my_image.jpg"); AnnotateImageResponse response = this.cloudVisionTemplate.analyzeImage( imageResource, Type.LABEL_DETECTION); System.out.println("Image Classification results: " + response.getLabelAnnotationsList()); }
A Sample Spring Boot Application is provided to show how to use the Cloud Vision starter and template.