Este tópico descreve como usar o recurso de reconhecimento de código QR.
Cenários
Pagamento com códigos QR: os usuários podem escanear um código QR para concluir pagamentos.
Marketing e publicidade com códigos QR: profissionais de marketing e anunciantes podem adicionar códigos QR a pôsteres e embalagens de produtos para promovê-los.
Visão geral
O Intelligent Media Management (IMM) oferece o recurso de reconhecimento de código QR. Com ele, você detecta a posição e o conteúdo de um ou mais códigos QR ou códigos de barras em arquivos de imagem, como fotos e capturas de tela. O recurso também retorna as informações de posição e o texto transmitido pelos códigos. As informações de posição incluem a coordenada x do canto superior esquerdo, a coordenada y do canto superior esquerdo, a largura e a altura, conforme mostra a figura a seguir.
-
Código QR

-
Código de barras

Use o recurso de reconhecimento de código QR para implementar a leitura e o escaneamento de códigos QR ou de barras em suas aplicações de negócios. Você também pode desenvolver recursos para bloquear ou pixelizar códigos QR ou de barras em imagens com base nesse recurso.
Pré-requisitos
Crie e obtenha um par de AccessKey. Para mais informações, consulte Create an AccessKey.
Ative o Object Storage Service (OSS), crie um bucket e carregue objetos nele. Para mais informações, consulte Upload objects.
Ative o IMM. Para mais informações, consulte Activate IMM.
-
Crie um projeto no console do IMM. Para mais informações, consulte Create a project.
NotaChame a operação CreateProject para criar um projeto. Para mais informações, consulte CreateProject.
Chame a operação ListProjects para consultar os projetos existentes em uma região específica. Para mais informações, consulte ListProjects.
Uso
Chame a operação DetectImageCodes para detectar códigos de barras em uma imagem.
A detecção de código QR permite detectar até cinco códigos QR em uma única imagem.
Exemplo de detecção de código QR
Informações da imagem
Projeto do IMM: test-project
Local de armazenamento da imagem: oss://test-bucket/test-object1.jpg
-
Imagem de exemplo

Exemplo de solicitação
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/test-object1.jpg",
}
Exemplo de resposta
{
"Codes": [
{
"Type": "qrcode",
"Content": "https://www.aliyun.com/product/imm",
"Boundary": {
"Left": 447,
"Top": 288,
"Height": 720,
"Width": 767
}
}
],
"RequestId": "9692C8B4-2AAF-55DE-91A0-B0B53725FBAB"
}
O exemplo de resposta anterior indica que a imagem contém um código QR.
Exemplo de código
O exemplo de código a seguir mostra como usar o SDK do IMM para Python para detectar códigos QR em uma imagem.
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
import os
from typing import List
from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client(
access_key_id: str,
access_key_secret: str,
) -> imm20200930Client:
"""
Use your AccessKey ID and AccessKey secret to initialize the client.
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
access_key_id=access_key_id,
access_key_secret=access_key_secret
)
# Specify the IMM endpoint.
config.endpoint = f'imm.cn-beijing.aliyuncs.com'
return imm20200930Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
# The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. To prevent security risks, we recommend that you call API operations or perform routine O&M as a RAM user.
# We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised.
# In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access. For information about how to configure environment variables, see https://www.alibabacloud.com/help/document_detail/2361894.html.
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
# Initialize the client.
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
detect_image_codes_request = imm_20200930_models.DetectImageCodesRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object1.jpg'
)
runtime = util_models.RuntimeOptions()
try:
# You can choose to print the response of the API operation.
client.detect_image_codes_with_options(detect_image_codes_request, runtime)
except Exception as error:
# Print the error message if necessary.
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
# The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. To prevent security risks, we recommend that you call API operations or perform routine O&M as a RAM user.
# We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised.
# In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access. For information about how to configure environment variables, see https://www.alibabacloud.com/help/document_detail/2361894.html.
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
# Initialize the client.
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
detect_image_codes_request = imm_20200930_models.DetectImageCodesRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object1.jpg'
)
runtime = util_models.RuntimeOptions()
try:
# You can choose to print the response of the API operation.
await client.detect_image_codes_with_options_async(detect_image_codes_request, runtime)
except Exception as error:
# Print the error message if necessary.
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])
Exemplo de detecção de código de barras
Informações da imagem
Projeto do IMM: test-project
Local de armazenamento da imagem: oss://test-bucket/test-object2.jpg
-
Imagem de exemplo

Exemplo de solicitação
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/test-object2.jpg",
}
Exemplo de resposta
{
"Codes": [
{
"Type": "barcode",
"Confidence": 0.433,
"Content": "",
"Boundary": {
"Left": 162,
"Top": 393,
"Height": 86,
"Width": 78
}
}
],
"RequestId": "391A3AEC-FF64-5450-96DF-18DBDC234B2F"
}
O exemplo de resposta anterior indica que a imagem contém um código de barras.
Exemplo de código
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
import os
from typing import List
from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client(
access_key_id: str,
access_key_secret: str,
) -> imm20200930Client:
"""
Use your AccessKey ID and AccessKey secret to initialize the client.
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
access_key_id=access_key_id,
access_key_secret=access_key_secret
)
# Specify the IMM endpoint.
config.endpoint = f'imm.cn-beijing.aliyuncs.com'
return imm20200930Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
# The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. To prevent security risks, we recommend that you call API operations or perform routine O&M as a RAM user.
# We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised.
# In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access. For information about how to configure environment variables, see https://www.alibabacloud.com/help/document_detail/2361894.html.
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
# Initialize the client.
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
detect_image_codes_request = imm_20200930_models.DetectImageCodesRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object2.jpg'
)
runtime = util_models.RuntimeOptions()
try:
# You can choose to print the response of the API operation.
client.detect_image_codes_with_options(detect_image_codes_request, runtime)
except Exception as error:
# Print the error message if necessary.
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
# The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. To prevent security risks, we recommend that you call API operations or perform routine O&M as a RAM user.
# We recommend that you do not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised.
# In this example, the AccessKey pair is read from the environment variables to implement identity verification for API access. For information about how to configure environment variables, see https://www.alibabacloud.com/help/document_detail/2361894.html.
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
# Initialize the client.
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
detect_image_codes_request = imm_20200930_models.DetectImageCodesRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object2.jpg'
)
runtime = util_models.RuntimeOptions()
try:
# You can choose to print the response of the API operation.
await client.detect_image_codes_with_options_async(detect_image_codes_request, runtime)
except Exception as error:
# Print the error message if necessary.
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])