Gunakan fitur deteksi kendaraan untuk mendeteksi informasi kendaraan dan pelat nomor dalam sebuah citra. Topik ini menjelaskan parameter yang dapat ditentukan saat menggunakan fitur ini serta memberikan contoh cara mendeteksi informasi tersebut.
Skenario
Manajemen lalu lintas: Deteksi kendaraan digunakan dalam sistem pemantauan dan manajemen lalu lintas, seperti mengidentifikasi citra pelanggaran lalu lintas untuk membantu memproses pelanggaran tersebut.
Identifikasi kendaraan abnormal: Fitur ini mendeteksi gambar yang diunggah ke bucket Object Storage Service (OSS) untuk mengidentifikasi informasi kendaraan dan pelat nomor.
CatatanInformasi kendaraan mencakup lokasi, warna, dan jenis kendaraan. Informasi pelat nomor mencakup lokasi dan teks pelat nomor.
Analisis lalu lintas: Pendeteksian kendaraan membantu menganalisis penggunaan jalan dan distribusi lalu lintas.
Cara menggunakan
Prasyarat
Anda telah mengaktifkan Intelligent Media Management (IMM).
Anda telah membuat bucket di OSS dan mengunggah file yang akan diproses ke bucket tersebut.
Anda telah membuat dan memetakan Proyek IMM. Anda dapat memetakan proyek melalui Konsol OSS atau dengan memanggil API. Proyek IMM harus berada di wilayah yang sama dengan bucket.
Anda telah memberikan izin yang diperlukan kepada pengguna.
Deteksi kendaraan
Kode sampel berikut menunjukkan cara menentukan parameter untuk mendeteksi informasi kendaraan dan pelat nomor dalam sebuah citra menggunakan SDK OSS untuk bahasa pemrograman umum. Jika Anda ingin menggunakan bahasa pemrograman lain, modifikasi parameter berdasarkan kode sampel ini.
Java
OSS SDK for Java 3.17.4 atau versi lebih baru diperlukan.
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 {
// Tentukan endpoint dari wilayah tempat bucket berada.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket.
String bucketName = "examplebucket";
// Jika citra disimpan di direktori root bucket, masukkan nama citra. Jika citra tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap citra. Contoh: exampledir/example.jpg.
String key = "example.jpg";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya ketika OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Buat instruksi pemrosesan untuk mendeteksi informasi kendaraan dan informasi pelat nomor dalam citra.
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
getObjectRequest.setProcess("image/cars");
// Gunakan parameter process metode getObject untuk mengirimkan instruksi pemrosesan.
OSSObject ossObject = ossClient.getObject(getObjectRequest);
// Baca dan tampilkan hasil kueri.
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 {
// Matikan instance OSSClient.
ossClient.shutdown();
}
}
}Python
OSS SDK for Python 2.18.4 atau versi lebih baru diperlukan.
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan endpoint dari wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Jika citra disimpan di direktori root bucket, masukkan nama citra. Jika citra tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap citra. Contoh: exampledir/example.jpg.
key = 'example.jpg'
# Buat instruksi pemrosesan untuk mendeteksi informasi kendaraan dan informasi pelat nomor dalam citra.
process = 'image/cars'
try:
# Gunakan metode get_object dan kirimkan instruksi pemrosesan menggunakan parameter process.
result = bucket.get_object(key, process=process)
# Baca dan tampilkan hasil kueri.
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 atau versi lebih baru diperlukan.
package main
import (
"fmt"
"io"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Dapatkan kredensial akses sementara dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instance OSSClient.
// Tentukan endpoint dari wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint sebenarnya Anda.
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: 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)
}
// Tentukan nama bucket. Contoh: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Jika citra disimpan di direktori root bucket, masukkan nama citra. Jika citra tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap citra. Contoh: exampledir/example.jpg.
// Gunakan metode oss.Process untuk membuat instruksi pemrosesan untuk mendeteksi informasi kendaraan dan informasi pelat nomor dalam citra.
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 atau versi lebih baru diperlukan.
<?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 {
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan endpoint dari wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';
// Tentukan nama bucket. Contoh: examplebucket.
$bucket = 'examplebucket';
// Jika citra disimpan di direktori root bucket, masukkan nama citra. Jika citra tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap citra. Contoh: exampledir/example.jpg.
$key = 'example.jpg';
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
"region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Buat instruksi pemrosesan untuk mendeteksi informasi kendaraan dan informasi pelat nomor dalam citra.
$options[$ossClient::OSS_PROCESS] = "image/cars";
$result = $ossClient->getObject($bucket,$key,$options);
var_dump($result);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}Deskripsi parameter
Action: image/cars
Untuk informasi lebih lanjut tentang parameter respons, lihat DetectImageCars.
API terkait
Contoh permintaan
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: SignatureValueContoh tanggapan sukses
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
}
]
}Penagihan
Selama deteksi kendaraan, karena layanan IMM dipanggil, item penagihan berikut dihasilkan di kedua sisi OSS dan IMM:
Sisi OSS: Untuk harga rinci, lihat Harga OSS
API
Item penagihan
Deskripsi
GetObject
Permintaan GET
Anda dikenakan biaya permintaan berdasarkan jumlah permintaan yang berhasil.
Trafik keluar Internet
Jika Anda memanggil operasi GetObject menggunakan titik akhir publik, seperti oss-cn-hangzhou.aliyuncs.com, atau titik akhir percepatan, seperti oss-accelerate.aliyuncs.com, Anda dikenakan biaya trafik keluar Internet berdasarkan ukuran data.
Pengambilan objek IA
Jika objek IA diambil, Anda dikenakan biaya pengambilan data IA berdasarkan ukuran data IA yang diambil.
Akselerasi transfer
Jika Anda mengaktifkan akselerasi transfer dan menggunakan titik akhir percepatan untuk mengakses bucket Anda, Anda dikenakan biaya akselerasi transfer berdasarkan ukuran data.
HeadObject
Permintaan GET
Anda dikenakan biaya permintaan berdasarkan jumlah permintaan yang berhasil.
Sisi IMM: Untuk harga rinci, lihat Item Penagihan IMM
PentingMulai pukul 11:00 UTC+8 pada 28 Juli 2025, layanan deteksi kendaraan IMM akan ditingkatkan dari model gratis ke model berbayar. Item penagihan spesifik adalah ImageDetect. Untuk informasi lebih lanjut, lihat Pengumuman Penyesuaian Penagihan IMM.
API
Item penagihan
Deskripsi
DetectImageCars
ImageDetect
Anda dikenakan biaya permintaan berdasarkan jumlah permintaan yang berhasil.
Catatan
Deteksi kendaraan hanya mendukung pemrosesan sinkron (x-oss-process).
Akses anonim akan ditolak.