Python 利用百度 API 进行图像识别

本文介绍如何利用Python和百度智能云API进行图像识别,包括人体识别和物体识别,通过简单步骤调用API,实现图像数据的快速分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

人工智能的领域非常广,如指纹识别、人脸识别、图像场景识别、文字识别、视网膜识别、虹膜识别、自动规划、智能搜索、博弈、智能控制等。许多人对人工智能有着浓厚的兴趣,如果不是专业团队,想要开发出人工智能的项目不太容易,那么如何用简单快捷的方法获取这些功能呢?Python
拥有强大的人工智能库,本期我们来调用百度 API 进行图像识别。

下面我们开始行动吧~~~

一、百度智能云的使用

1.首先搜索百度智能云,注册并登录。

百度智能云登录页面

2.在左侧栏的总览中找到 “人工智能”,点击 “图像识别” 进入图像识别管理中心。

百度智能云首页

3.我们可以看到调用量限制点击创建应用,在创建应用的界面,输入应用名称和描述即可立即创建。

创建应用获取接口账密

4.创建完毕应用列表中会新增一条数据,将 AppID、API Key 和 Secret Key 复制下来,方便以后直接调用。点击左侧列表的 “SDK 下载”。

应用接口展示

二、SDK 参考和使用

1.进入 “SDK 资源” 百度大脑 AI 开放平台页面,找到 “Python SDK”,点击 “使用说明” 。

SDK 使用说明

2.在 “快速入门” 中根据相关说明,在 cmd 中执行 pip install baidu-aip 此命令安装 baidu-aip 库,然后创建新的 py (如:myapp.py ),将参考代码直接复制到 myapp.py 中,并把刚刚创建应用中的 AppID、API Key和 Secret Key 粘贴到相应位置完成 API 接口对接。

pip install baidu-aip 

3.点击 “接口说明”,参考相关代码并粘贴到 myapp.py 尾部,找一张 jpg 图片并命名为 example.jpg 放当前目录完成接口调用。

接口说明展示

三、运行代码

1.写好代码后直接运行代码,会发现输出框没有出现结果,将 “带参数调用通用物体识别” 的代码打印出来。这样,调用百度 API 进行图像识别就完成啦!是不是很简单呢?

""" 带参数调用通用物体识别 """
res = client.advancedGeneral(image, options)
print (res)

四、基本代码展示

from aip import AipBodyAnalysis, AipImageClassify
import re, os

# 调用人体识别 SDK
def maskdata(image):
    """是否佩戴口罩数据分析"""
	APP_ID = '你的 APPID '
	API_KEY = '你的 AK '
	SECRET_KEY = '你的 SK '
    client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
    core(client,image)

# 调用图像识别 SDK
def picdata(image):
    """ 图像识别 """
	APP_ID = '你的 APPID '
	API_KEY = '你的 AK '
	SECRET_KEY = '你的 SK '
    client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
    get_msg_by_image(client,image)

# 调用图像识别结果
def get_msg_by_image(client,image):
    options = {'baike_num': 5}
    options["baike_num"] = 5
    res = client.advancedGeneral(image, options=options)
    a = res['result']
    # print(a)
    print('\033[1;33m\n----------------------\n图像识别结果:\n----------------------')
    i = 0
    for b in a:
        try:
            i += 1
            print('\n第', str(i), '行', b['root'], b['baike_info']['description'])

        except Exception as e:
            i -= 1
            pass

    print('----------------------\n>>>共识别', str(i), '行数据<<<')

""" 读取图片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
        
# 单个图片测试
# def mask():
#     url = input('\033[0;33m\n请输入图片名称 (回车退出) : ')
#     if url == "":
#         print('\n--------程序结束--------')
#     else:
#         try:
#             image = get_file_content(url + '.jpg')
#             maskdata(image)
#         except:
#             print('\n未找到该图片!')
#             mask()

# 传入人体识别参数
def mask(url):
    image = get_file_content(url)
    maskdata(image)

# 调用人体识别结果
def core(client,image):
    try:
        """ 带参数调用人体检测与属性识别 """
        a = str(client.bodyAttr(image))
        res = re.findall("[\u4e00-\u9fa5]+",a)
        data = '''是否带口罩:'''+res[4]
        print('\033[0;33m\n--------口罩识别--------\n')
        if data == '是否带口罩:戴口罩':
            print('\033[0;33m' + data)
        else:
            print('\033[0;31m' + data)
    except:
        print('\033[0;31m无法识别是否戴口罩!\033[0;33m')
    picdata(image)

# 启动主程序
if __name__ == '__main__':
	url = input("输入文件目录完整路径: ")
    g = os.walk(url)
    for path, d, filelist in g:
        for filename in filelist:
            if filename.endswith('jpg'):
                url = os.path.join(url,filename)
                print('\n\033[0;30m>>>正在识别', url, '图片<<<\033[0;33m')
                mask(url)

在这里插入图片描述

学习 Tornado Web Server 搭建 python 服务器,
结合 myapp.py,就可以让你的网站实现图像识别小功能啦~~~快去试试吧!

### 使用 Python 调用百度 AI 开放平台 API 实现图像识别 为了通过 Python 调用百度 AI 的图像识别功能,可以按照以下方法操作。此过程涉及创建应用、获取访问令牌以及发送请求到百度的 OCR 接口。 #### 创建应用并获取密钥 首先,在百度 AI 开放平台上注册账号并创建一个新的应用。成功创建后会获得 `APP_ID`、`API_KEY` 和 `SECRET_KEY`。这三个参数用于生成安全的访问令牌[^2]。 #### 安装依赖库 需要安装两个主要的 Python 库来完成这一任务:`requests` 用来发起 HTTP 请求;`base64` 则负责将图片文件转换成 Base64 编码形式以便传输给服务器。 ```bash pip install requests ``` #### 获取 Access Token 每次调用百度 AI 提供的服务之前都需要先得到有效的 access token。可以通过下面这段代码实现: ```python import requests def fetch_token(api_key, secret_key): url = 'https://aip.baidubce.com/oauth/2.0/token' params = { 'grant_type': 'client_credentials', 'client_id': api_key, 'client_secret': secret_key } response = requests.post(url, data=params).json() return response.get('access_token') ``` #### 发送图片数据至 OCR 接口 一旦拥有了 access token ,就可以利用它向指定 URL 地址上传待处理的图片,并接收返回的结果。这里展示了一个简单的例子,演示如何读取本地图片并将之转化为适合传递的形式。 ```python from PIL import Image import base64 def recognize_image(image_path, access_token): request_url = f'https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token={access_token}' headers = {'content-type': 'application/x-www-form-urlencoded'} with open(image_path, 'rb') as img_file: image_data = base64.b64encode(img_file.read()).decode() payload = {"image": image_data} result = requests.post(request_url, data=payload, headers=headers).json() return result['words_result'] ``` 以上函数接受一张存储于磁盘上的图片路径作为输入参数之一,另一个则是前面提到过的有效期内的 access token 。最终输出的是由字典组成的列表,其中每个元素代表检测出来的单个文本框及其位置信息等细节[^3]。 #### 处理可能遇到的问题 当尝试运行上述脚本时可能会碰到若干常见错误,比如因为网络连接不稳定而导致超时异常或者由于未正确设置 Content-Type 导致服务端拒绝解析传来的 JSON 数据包等问题。另外值得注意的一点是在实际部署过程中还需要考虑安全性方面的要求,例如妥善保管自己的私钥材料以免泄露风险等等[^4]。 如果希望提升识别效果还可以借助 EasyDL 自定义模型训练工具来自行优化特定场景下的表现水平[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深联微科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值