La fonctionnalité de détection de véhicules identifie les informations relatives aux véhicules et aux plaques d'immatriculation dans une image. Cette rubrique décrit les paramètres à spécifier pour utiliser cette fonctionnalité et fournit un exemple de détection.
Scénarios
Gestion du trafic : Intégrez la détection de véhicules aux systèmes de surveillance et de gestion du trafic, par exemple pour identifier les images capturées lors d'infractions routières et faciliter leur traitement.
-
Identification des véhicules anormaux : Analysez les images téléchargées dans des compartiments Object Storage Service (OSS) pour extraire les données relatives aux véhicules et aux plaques d'immatriculation.
RemarqueLes informations sur le véhicule incluent sa position, sa couleur et son type. Les informations sur la plaque d'immatriculation comprennent sa position et le texte qu'elle contient.
Analyse du trafic : Analysez des indicateurs tels que l'utilisation des routes et la répartition du trafic.
Utilisation
Prérequis
Vous avez activé Intelligent Media Management (IMM).
Vous avez créé un compartiment dans OSS et téléchargé les fichiers à traiter dans ce compartiment.
Vous avez créé et associé un projet IMM. Vous pouvez associer le projet via la console OSS ou en appelant une API. Le projet IMM doit se trouver dans la même région que le compartiment.
Vous avez accordé les autorisations requises à l'utilisateur.
Détection de véhicules
L'exemple de code suivant montre comment spécifier les paramètres pour détecter les informations sur les véhicules et les plaques d'immatriculation dans une image à l'aide des SDK OSS pour les langages de programmation courants. Pour utiliser d'autres langages, adaptez les paramètres en vous basant sur cet exemple.
Java
Le SDK OSS pour Java version 3.17.4 ou ultérieure est requis.
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.
// Call the shutdown method to release resources when the OSSClient is no longer in use.
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
Le SDK OSS pour Python version 2.18.4 ou ultérieure est requis.
# -*- 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
Le SDK OSS pour Go version 3.0.2 ou ultérieure est requis.
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
Le SDK OSS pour PHP version 2.7.0 ou ultérieure est requis.
<?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;
}
Description des paramètres
Action : image/cars
Pour plus d'informations sur les paramètres de réponse, consultez DetectImageCars.
API associée
Exemple de requête
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: SignatureValue
Exemple de réponse réussie
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
}
]
}
Facturation
L'appel au service IMM lors de la détection de véhicules génère des frais à la fois sur OSS et sur IMM :
-
Côté OSS : Pour le détail des tarifs, consultez Tarification OSS
API
Élément de facturation
Description
GetObject
Requêtes GET
Des frais de requête s'appliquent en fonction du nombre de requêtes abouties.
Trafic sortant via Internet
Si vous appelez l'opération GetObject via un endpoint public (par exemple oss-cn-hangzhou.aliyuncs.com) ou un endpoint d'accélération (par exemple oss-accelerate.aliyuncs.com), des frais de trafic sortant via Internet sont facturés selon la taille des données.
Récupération d'objets IA
La récupération d'objets Infrequent Access (IA) entraîne des frais de récupération de données IA calculés sur la base de la taille des données récupérées.
Accélération du transfert
L'activation de l'accélération du transfert et l'utilisation d'un endpoint d'accélération pour accéder à votre compartiment génèrent des frais d'accélération du transfert basés sur la taille des données.
HeadObject
Requêtes GET
Des frais de requête s'appliquent en fonction du nombre de requêtes abouties.
-
Côté IMM : Pour le détail des tarifs, consultez Éléments de facturation IMM
ImportantÀ partir du 28 juillet 2025 à 11 h 00 (UTC+8), le service de détection de véhicules IMM passera d'un modèle gratuit à un modèle payant. L'élément de facturation concerné est ImageDetect. Pour plus d'informations, consultez Annonce relative à l'ajustement de la facturation IMM.
API
Élément de facturation
Description
DetectImageCars
ImageDetect
Des frais de requête s'appliquent en fonction du nombre de requêtes abouties.
Remarques
La détection de véhicules prend uniquement en charge le traitement synchrone (x-oss-process).
L'accès anonyme est refusé.