Detecta todos os corpos humanos em uma imagem e retorna as caixas delimitadoras e as pontuações de confiança correspondentes.
Cenários
Detecção de pedestres: localize pedestres em imagens.
Rastreamento de trajetória: analise o comportamento de pedestres com detecção e rastreamento.
Contagem de pessoas: conte indivíduos em imagens para análise de tráfego ou segurança de locais.
Como usar
Pré-requisitos
O serviço Intelligent Media Management (IMM) está ativado.
Você criou um bucket do OSS e carregou os arquivos a serem processados no bucket.
Você criou um projeto IMM e o mapeou para o bucket pelo OSS console ou por uma operação de API. O projeto IMM deve estar na mesma região do bucket.
O usuário recebeu as permissões necessárias.
Exemplos de código
Os exemplos a seguir detectam corpos humanos com SDKs do OSS.
Java
É necessário o OSS SDK for Java 3.17.4 ou posterior.
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 Demo {
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 region of the endpoint. 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 for human body detection.
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
getObjectRequest.setProcess("image/bodies");
// Use the getObject method, and 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 imageBodies = baos.toString("UTF-8");
System.out.println("Image Bodies:");
System.out.println(imageBodies);
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
} finally {
// Shut down the OSSClient instance.
ossClient.shutdown();
}
}
}
Python
É necessário o OSS SDK for Python 2.18.4 ou posterior.
# -*- 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 region endpoint. For example: https://oss-cn-hangzhou.aliyuncs.com for China (Hangzhou).
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)
# Specify the object name (key). For nested files, provide the full path. Example: exampledir/example.jpg
key = 'example.jpg'
# Create a processing instruction for human body detection.
process = 'image/bodies'
try:
# Use the process parameter of the get_object method to pass the processing instruction.
result = bucket.get_object(key, process=process)
# Read and display the query results.
image_bodies = result.read().decode('utf-8')
print("Image Bodies:")
print(image_bodies)
except oss2.exceptions.OssError as e:
print("Error:", e)
Go
É necessário o OSS SDK for Go 3.0.2 ou posterior.
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 name of the image. 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.
// Create a processing instruction for human body detection by using the oss.Process method.
body, err := bucket.GetObject("example.jpg", oss.Process("image/bodies"))
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
É necessário o OSS SDK for PHP 2.7.0 ou posterior.
<?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 name of the image. 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 for human body detection.
$options[$ossClient::OSS_PROCESS] = "image/bodies";
$result = $ossClient->getObject($bucket,$key,$options);
var_dump($result);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}
Parâmetros
Nome da operação: image/bodies
Parâmetro da solicitação
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
sen |
int |
Não |
Sensibilidade da detecção. Valores mais altos detectam mais corpos. Valores válidos: 0 a 100. Padrão: 60. |
50 |
Parâmetros da resposta
Os campos da resposta estão descritos em DetectImageBodies - Detectar corpos humanos em imagens.
APIs relacionadas
Para uso avançado, chame as APIs RESTful diretamente com cálculo de assinatura V4. (Recomendado) Incluir uma assinatura V4.
Adicione o parâmetro x-oss-process à operação GetObject para processar imagens. GetObject.
Exemplo 1
Solicitação de exemplo
GET /example.jpg?x-oss-process=image/bodies HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 21 Jul 2023 08:49:07 GMT
Authorization: SignatureValue
Resposta de exemplo
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Fri, 21 Jul 2023 08:49:09 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 145
Connection: keep-alive
x-oss-request-id: 64BA4685A645AE37313CBD14
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: 329
{
"RequestId": "58C0F6A4-7B26-5E22-9C60-EFF90E2082ED",
"Bodies": [
{
"Confidence": 0.733,
"Boundary": {
"Left": 115,
"Top": 97,
"Height": 103,
"Width": 63
}
}
]
}
Exemplo 2
Solicitação de exemplo
Neste exemplo, o valor do parâmetro sen é 50.
GET /example.jpg?x-oss-process=image/bodies,sen_50 HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 21 Jul 2023 08:54:54 GMT
Authorization: SignatureValue
Resposta de exemplo
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Fri, 21 Jul 2023 08:54:56 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 145
Connection: keep-alive
x-oss-request-id: 64BA47E05B40CC33396D6AA3
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: 394
{
"RequestId": "E9BDE106-1436-5077-9F6E-65D81DC6FEC8",
"Bodies": [
{
"Confidence": 0.733,
"Boundary": {
"Left": 115,
"Top": 97,
"Height": 103,
"Width": 63
}
},
{
"Confidence": 0.732,
"Boundary": {
"Left": 214,
"Top": 121,
"Height": 86,
"Width": 63
}
},
{
"Confidence": 0.656,
"Boundary": {
"Left": 63,
"Top": 102,
"Height": 100,
"Width": 82
}
}
]
}
Faturamento
A detecção de corpo humano gera cobranças no OSS e no IMM:
-
No OSS: Preços do OSS
API
Item de faturamento
Descrição
GetObject
Solicitações GET
Cobrança de taxas de solicitação conforme o número de solicitações bem-sucedidas.
Tráfego de saída pela Internet
Ao chamar a operação GetObject com um endpoint público, como oss-cn-hangzhou.aliyuncs.com, ou um endpoint de aceleração, como oss-accelerate.aliyuncs.com, há cobrança de tráfego de saída pela Internet conforme o volume de dados.
Capacidade de recuperação de dados de acesso infrequente
Na recuperação de objetos IA, aplica-se cobrança de recuperação de dados IA conforme o tamanho dos dados recuperados.
Capacidade para recuperação direta de dados do Archive
Na recuperação de objetos Archive em bucket com acesso em tempo real ativado, aplica-se cobrança de recuperação de dados Archive conforme o tamanho dos objetos recuperados.
Aceleração de transferência
Com a aceleração de transferência ativada e uso de endpoint de aceleração para acessar o bucket, há cobrança de aceleração de transferência conforme o volume de dados.
HeadObject
Solicitações GET
Cobrança de taxas de solicitação conforme o número de solicitações bem-sucedidas.
-
No IMM: Itens de faturamento do IMM
ImportanteA partir das 11:00 UTC+8 de 28 de julho de 2025, a detecção de corpo humano do IMM deixa de ser gratuita e passa a ser paga. O item de faturamento é ImageDetect. Anúncio de ajuste de faturamento do IMM.
API
Item de faturamento
Descrição
DetectImageBodies
ImageDetect
Cobrança de taxas de solicitação conforme o número de solicitações bem-sucedidas.
Observações de uso
A detecção de corpo humano oferece suporte apenas a processamento síncrono via x-oss-process.