I’ve been playing around with the OCI Vision API recently and have been really impressed at it’s ease of use and performance 🏎️.
One thing I wanted to figure out, is how to use the OCI Vision API to analyse a local image on my machine, rather than having to first upload to OCI Object Storage, I couldn’t find any examples of how to do this (possibly due to my Google-Fu skills!) so I spent some time putting together the example below using Python, which does the following:
- Converts an image on my PC to Base64 format, this is a pre-req for using the OCI Vision API when submitting a local image for analysis, rather than one stored within OCI Object Storage.
- Submits the image to the OCI Vision API (object detection).
- Returns a list of the objects detected and the confidence level of each
Step 1 – Convert image to Base64
import base64
path = "C:\\Users\\brend\\OneDrive\\Pictures\\Camera Roll\\Photo.jpg" # path to image file
def get_base64_encoded_image(image_path): # function that converts image file to Base64
with open(image_path, "rb") as img_file:
return base64.b64encode(img_file.read()).decode('utf-8')
image = get_base64_encoded_image(path) # call the function, passing the path of the image
Step 2 – Submit image to the OCI Vision API for analysis
import oci
config = oci.config.from_file() # auth to OCI using the default config file and file
ai_vision_client = oci.ai_vision.AIServiceVisionClient(config) # create the Vision API client
analyze_image = ai_vision_client.analyze_image( #pass the image for analysis
analyze_image_details=oci.ai_vision.models.AnalyzeImageDetails(
features=[
oci.ai_vision.models.ImageObjectDetectionFeature(
max_results=130,)],
image=oci.ai_vision.models.InlineImageDetails(
source="INLINE",
data = image),
compartment_id="Compartment ID")) # update with the OCID of the compartment whose Vision API you'd like to use
Step 3 – Return a list of objects detected and the confidence level of each
analysis = analyze_image.data # put the JSON response returned into a variable
# for each object within the JSON response print it's name and the confidence levels
for object in analysis.image_objects:
print(str(object.name) + " : " + str(object.confidence))
Here is the script in action 🎬
Input image (Photo.jpg):


Here is a slightly more complex image:


The script demo’d above can be found on GitHub.

Leave a reply to OCI Vision: drawing a bounding box on analysed images 📦 – Brendan's Tech Ramblings Cancel reply