All Products
Search
Document Center

Object Storage Service:Vehicle detection

Last Updated:Mar 17, 2025

You can use the vehicle detection feature to detect vehicle information and license plate information in an image. This topic describes the parameters that you can specify when you use the vehicle detection feature and provides an example on how to detect vehicle information and license plate information in an image.

Scenarios

  • Traffic management: Vehicle detection can be used in traffic monitoring and management systems, such as identifying the images captured for traffic violations to help deal with traffic violations.

  • Identification of abnormal vehicles: Vehicle detection can detect images uploaded to Object Storage Service (OSS) buckets to help identify vehicle information and license plate information.

    Note

    Vehicle information includes vehicle locations, vehicle colors, and vehicle types. License plate information includes license plate locations and license plate texts.

  • Traffic analysis: Vehicle detection can help you analyze traffic information such as road usage and traffic distribution.

Prerequisites

  • IMM is activated. For more information, see Activate IMM.

  • Before proceeding, make sure that an IMM Project is mapped to your bucket. For more information about how to map an IMM Project, see Get started and AttachOSSBucket.

  • The required permissions are granted to the Resource Access Management (RAM) user.

Notes

  • Vehicle detection can be enabled only for synchronous processing requests (x-oss-process).

  • Anonymous access will be denied.

Parameter description

Action: image/cars

Note

For more information about the response parameters, see DetectImageCars.

Examples

Use OSS SDKs

The following sample code provides examples on how to specify parameters to detect vehicle information and license plate information in an image by using OSS SDKs for common programming languages. If you want to specify parameters to detect vehicle information and license plate information in an image by using other programming languages, modify the parameters based on the following sample code.

Java

OSS SDK for Java 3.17.4 or later is required.

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyuncs.exceptions.ClientException;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class Demo1 {
    public static void main(String[] args) throws ClientException, ClientException {
        // Specify the endpoint of the region in which the bucket is located. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Specify the ID of the Alibaba Cloud region in which the bucket is located. Example: cn-hangzhou. 
        String region = "cn-hangzhou";
        // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the name of the bucket. 
        String bucketName = "examplebucket";
        // If the image is stored in the root directory of the bucket, enter the image name. If the image is not stored in the root directory of the bucket, you must specify the full path of the image. Example: exampledir/example.jpg. 
        String key = "example.jpg";

        // Create an OSSClient instance. 
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Create a processing instruction to detect vehicle information and license plate information in the image. 
            GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
            getObjectRequest.setProcess("image/cars");

            // Use the process parameter of the getObject method to pass the processing instruction. 
            OSSObject ossObject = ossClient.getObject(getObjectRequest);

            // Read and display the query results. 
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = ossObject.getObjectContent().read(buffer)) != -1) {
                baos.write(buffer, 0, bytesRead);
            }
            String imageCars = baos.toString("UTF-8");
            System.out.println("Image Cars:");
            System.out.println(imageCars);
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        } finally {
            // Shut down the OSSClient instance. 
            ossClient.shutdown();
        }
    }
}

Python

OSS SDK for Python 2.18.4 or later is required.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Specify the ID of the Alibaba Cloud region in which the bucket is located. 
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)

# If the image is stored in the root directory of the bucket, enter the image name. If the image is not stored in the root directory of the bucket, you must specify the full path of the image. Example: exampledir/example.jpg. 
key = 'example.jpg'

# Create a processing instruction to detect vehicle information and license plate information in the image. 
process = 'image/cars'

try:
    # Use the get_object method and pass the processing instruction by using the process parameter. 
    result = bucket.get_object(key, process=process)

    # Read and display the query results. 
    image_cars = result.read().decode('utf-8')
    print("Image Cars:")
    print(image_cars)
except oss2.exceptions.OssError as e:
    print("Error:", e)

Go

OSS SDK for Go 3.0.2 or later is required.

package main

import (
	"fmt"
	"io"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Obtain the temporary access credentials from the environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Create an OSSClient instance. 
	// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. Specify your actual endpoint. 
	// Specify the ID of the Alibaba Cloud region in which the bucket is located. Example: cn-hangzhou. 
	client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Specify the name of the bucket. Example: examplebucket. 
	bucketName := "examplebucket"

	bucket, err := client.Bucket(bucketName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// If the image is stored in the root directory of the bucket, enter the image name. If the image is not stored in the root directory of the bucket, you must specify the full path of the image. Example: exampledir/example.jpg. 
	// Use the oss.Process method to create a processing instruction to detect vehicle information and license plate information in the image. 
	body, err := bucket.GetObject("example.jpg", oss.Process("image/cars"))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	defer body.Close()

	data, err := io.ReadAll(body)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println("data:", string(data))
}

PHP

OSS SDK for PHP 2.7.0 or later is required.

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;

try {
    // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
    $provider = new EnvironmentVariableCredentialsProvider(); 
    // Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
    $endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';
    // Specify the name of the bucket. Example: examplebucket. 
    $bucket = 'examplebucket';
    // If the image is stored in the root directory of the bucket, enter the image name. If the image is not stored in the root directory of the bucket, you must specify the full path of the image. Example: exampledir/example.jpg. 
    $key = 'example.jpg'; 

    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,        
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        // Specify the ID of the Alibaba Cloud region in which the bucket is located. 
        "region" => "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
  // Create a processing instruction to detect vehicle information and license plate information in the image. 
  $options[$ossClient::OSS_PROCESS] = "image/cars";
  $result = $ossClient->getObject($bucket,$key,$options);
  var_dump($result);
} catch (OssException $e) {
  printf($e->getMessage() . "\n");
  return;
}

Use RESTful API

Sample request

GET /example.jpg?x-oss-process=image/cars HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 21 Jul 2023 08:57:28 GMT
Authorization: OSS qn6q**************:77Dv****************

Sample success response

HTTP/1.1 200 OK
Server: AliyunOSS
Date: Fri, 21 Jul 2023 08:57:30 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 250
Connection: keep-alive
x-oss-request-id: 64BA487A5423BA333952334F
ETag: "2CE2EA370531B7CC1D23BE6015CF5DA5"
Last-Modified: Mon, 10 Jul 2023 13:07:30 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 13420962247653419692
x-oss-storage-class: Standard
x-oss-ec: 0048-00000104
Content-Disposition: attachment
x-oss-force-download: true
x-oss-server-time: 552

{
  "RequestId" : "0C299A82-5D32-57DE-B66B-5E2A814C60BA",
  "Cars": [
    {
    "LicensePlates": [
      {
        "Content": "LuA8***8",
        "Boundary": {
          "Width": 200,
          "Height": 300,
          "Left": 10,
          "Top": 30
        },
        "Confidence": 0.789
      }
    ],
    "CarType": "van",
    "CarTypeConfidence": 0.516,
    "CarColor": "white",
    "CarColorConfidence": 0.604,
    "Boundary": {
      "Width": 200,
      "Height": 300,
      "Left": 10,
      "Top": 30
    },
    "Confidence": 0.999
    }
  ]
}