Python调用华为API进行图像标签

目录

  • 1. 作者介绍
  • 2. 华为云API介绍
    • 2.1 华为云图像标签
    • 2.2 应用场景
    • 2.3 调用华为云API实现图像标签
  • 3. 实验过程
    • 3.1实验代码
    • 3.2 运行结果
    • 3.3 问题注释

1. 作者介绍

朱景坤,男,西安工程大学电子信息学院,2021级研究生
研究方向:图像处理
电子邮件:[email protected]

吴燕子,女,西安工程大学电子信息学院,2021级研究生,张宏伟人工智能课题组
研究方向:人工智能与模式识别
电子邮件:[email protected]

2. 华为云API介绍

2.1 华为云图像标签

可识别上千种通用物体以及数百种场景标签,一个图像可包含多个标签内容,语义内容非常丰富。更智能、准确的理解图像内容,让智能相册管理、照片检索和分类、基于场景内容或者物体的广告推荐等功能更加准确。
Python调用华为API进行图像标签_第1张图片

2.2 应用场景

1.场景分析
图像标签功能可准确识别视频、图像内容,提高检索效率和精度,从而使得个性化推荐、内容检索和分发更为有效。
Python调用华为API进行图像标签_第2张图片
2.智能相册
基于图像识别的标签可达近万种,智能相册可以自定义分类,比如“植物”、“美食”、“工作”等类别。方便用户管理相册,带来良好体验。
Python调用华为API进行图像标签_第3张图片
3.目标检测
在建筑施工现场,基于定制化的图像识别目标检测系统,可实时监测现场人员是否佩戴安全帽,以降低安全风险。
Python调用华为API进行图像标签_第4张图片
4. 图像搜索
基于图像标签的图像搜索技术,不管用户输入关键字,还是输入一张图像,都可以快速搜索到想要的图像。
Python调用华为API进行图像标签_第5张图片

2.3 调用华为云API实现图像标签

1.进入图像标签功能申请界面
首先使用账号登录华为云(也可另行注册)
(1)访问华为云官网huaweicloud.com,搜索“图像标签”
(2)**点击“免费试用”(**按照提示依次完成即可)
通过个人认证,有免费使用次数供大家学习!!
Python调用华为API进行图像标签_第6张图片
2.获取图像标签AK/SK
请确保账号登录华为云
访问华为云账号中我的凭证---------->再点击访问密钥获取AK/SK(按照提示下载对应的cv包)
Python调用华为API进行图像标签_第7张图片
Python调用华为API进行图像标签_第8张图片
下载对应的cv包!!如下图所示,表格中Access Key 和 Secret Access Key 就是需要的AK和SK。
在这里插入图片描述

  1. 调试图像标签接口
    (1)点击链接访问API 3.0 Explorer 在线接口调试页面apiexplorer.developer.huaweicloud.com
    并在搜索框输入图像识别功能进入调试端口
    Python调用华为API进行图像标签_第9张图片
    4.API 3.0 Explorer 在线接口调试图
    (2)如下图所示(可查看具体的调试要求)
    Python调用华为API进行图像标签_第10张图片
    调试成功之后,大家就可以将自动生成的python代码复制,但是一定要记得填入自己的"AK/SK"!!

3. 实验过程

3.1实验代码

######准备工作:在cmd中进入你所使用的python所在环境,通过pip的方式安装华为云的Python SDK
pip install huaweicloudsdkimage
pip install huaweicloudsdkcore
pip install base64
#########实验代码:运行前面步骤生成的代码
# coding: utf-8
####  导入指定的数据包  
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkimage.v2.region.image_region import ImageRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkimage.v2 import *
import base64

#### base64编码格式
def image_to_base64(self):
    with open(self, 'rb') as f:
        base64_data = base64.b64encode(f.read())      #  将图像转换为 base64数据格式
        return base64_data


if __name__ == "__main__":

    ak = "yourself_ak_from_cv"  #### 输入获得的access key
    sk = "yourself_sk_from_cv"     ###输入获得的secret key
    credentials = BasicCredentials(ak, sk) \

    client = ImageClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(ImageRegion.value_of("cn-north-4")) \
        .build()
####  channel =  cn-north-4   自己项目所在的大区
    try:
        request = RunImageTaggingRequest()
        request.body = ImageTaggingReq(
            limit=5,    ##  限制输出多少种类
            threshold=60,   ### 设置  confidence置信度  低于60的种类不输出
            language="zh",    ##  设置成中文显示
            image= image_to_base64('D:/data/train/动物/5.png')  ##  调用之前定义的 base64 编码 并且输入自己的图片路径
        )
        response = client.run_image_tagging(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

3.2 运行结果

输入图片:
Python调用华为API进行图像标签_第11张图片
运行结果:

{"result": {"tags": [{"confidence": "98.94", "type": "动物", "tag": "猪", "i18n_tag": {"zh": "猪", "en": "Pig"}, "i18n_type": {"zh": "动物", "en": "Animal"}, "instances": [{"bounding_box": {"height": 333.29959458571216, "top_left_x": 4.955303632296049, "top_left_y": 5.086499214172363, "width": 395.2104104849008}, "confidence": "93.81"}]}, 
{"confidence": "85.00", "type": "人工场景", "tag": "农场", "i18n_tag": {"zh": "农场", "en": "Farm"}, "i18n_type": {"zh": "人工场景", "en": "Manual scenario"}, "instances": []},
 {"confidence": "66.37", "type": "食物", "tag": "火腿", "i18n_tag": {"zh": "火腿", "en": "Ham"}, "i18n_type": {"zh": "食物", "en": "Food"}, "instances": []}]}}

3.3 问题注释

(1) 置信度输入范围必须在 0~100 超过此范围则报错
(2) 输入图像路径时一定要调用之前定义好的base64编码函数
可以有两种方法:
可以使用上面代码中转换的代码:image= image_to_base64(‘图片地址.png’)
还可以使用图片转base64码的在线工具。
(3) 如果忘记了下载的访问密钥怎么办??
解决方法有两个–新增访问密钥 / 删除并重新启用访问密钥

你可能感兴趣的:(Python,python)