This is a command line program that uses Google Cloud Vision to analyze an image.
View the code for this project here.
Download the code as a .zip
from DownGit here.
For example, here is the result for analyzing this image:
Cat: 0.99598557
Mammal: 0.9890478
Vertebrate: 0.9851104
Whiskers: 0.9777251
Small to medium-sized cats: 0.97744334
Felidae: 0.96784574
Carnivore: 0.9342105
pom.xml
pom.xml
is a Maven POM file that defines the project.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.happycoding</groupId>
<artifactId>google-cloud-vision-hello-world-standalone</artifactId>
<version>1</version>
<properties>
<exec.mainClass>io.happycoding.vision.CloudVisionHelloWorld</exec.mainClass>
<exec.cleanupDaemonThreads>false</exec.cleanupDaemonThreads>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-vision</artifactId>
<version>1.100.0</version>
</dependency>
</dependencies>
</project>
CloudVisionHelloWorld.java
CloudVisionHelloWorld.java
contains a main()
method that sends an image analysis request and outputs the result.
package io.happycoding.vision;
import com.google.cloud.vision.v1.AnnotateImageRequest;
import com.google.cloud.vision.v1.AnnotateImageResponse;
import com.google.cloud.vision.v1.BatchAnnotateImagesResponse;
import com.google.cloud.vision.v1.EntityAnnotation;
import com.google.cloud.vision.v1.Feature;
import com.google.cloud.vision.v1.Feature.Type;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.protobuf.ByteString;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class CloudVisionHelloWorld {
public static void main(String[] args) throws IOException {
String filePath = "C:\\Users\\kevin\\Desktop\\Stanley.jpg";
// Load the file
ByteString imageBytes = ByteString.readFrom(new FileInputStream(filePath));
Image image = Image.newBuilder().setContent(imageBytes).build();
// Create a label detection request for the image
Feature feature = Feature.newBuilder().setType(Type.LABEL_DETECTION).build();
AnnotateImageRequest request =
AnnotateImageRequest.newBuilder().addFeatures(feature).setImage(image).build();
List<AnnotateImageRequest> requests = new ArrayList<>();
requests.add(request);
// Send the request and get the response
ImageAnnotatorClient client = ImageAnnotatorClient.create();
BatchAnnotateImagesResponse batchResponse = client.batchAnnotateImages(requests);
List<AnnotateImageResponse> imageResponses = batchResponse.getResponsesList();
AnnotateImageResponse imageResponse = imageResponses.get(0);
// Handle errors
if (imageResponse.hasError()) {
System.out.println("Error: " + imageResponse.getError().getMessage());
}
// Print the labels extracted from the image
for (EntityAnnotation annotation : imageResponse.getLabelAnnotationsList()) {
System.out.println(annotation.getDescription() + ": " + annotation.getScore());
}
client.close();
}
}
Change the filePath
variable to point to an image on your computer.
Then run the project by executing this command:
mvn package exec:java
You should see something like this:
Cat: 0.99598557
Mammal: 0.9890478
Vertebrate: 0.9851104
Whiskers: 0.9777251
Small to medium-sized cats: 0.97744334
Felidae: 0.96784574
Carnivore: 0.9342105
Learn more in these tutorials:
Use machine learning to analyze images.
Happy Coding is a community of folks just like you learning about coding.
Do you have a comment or question? Post it here!
Comments are powered by the Happy Coding forum. This page has a corresponding forum post, and replies to that post show up as comments here. Click the button above to go to the forum to post a comment!