【Python3-API】定制化图像接口示例代码
756665228 发布于2018-01-30 13:36 浏览:4307 回复:10
5
收藏
最后编辑于2019-12-25

Python3-urllib3-API定制化图像接口示例代码

  • AccessToken获取可以参考:http://ai.baidu.com/forum/topic/show/497663(Python3-urllib3示例)
  • Python安装什么的。大家百度经验即可

-----------------------------------------------------下面开始代码----------------------------------------------------

  • Python3-API示例代码(定制化图像平台接口)
'''
Created on 2018-1-26
定制化图像接口-Python3 -API示例代码
@author: 小帅丶
'''
import urllib3,base64
import json
access_token='24.745a2689abb8f19ffd58b5ede94ba6e6.2592000.1519880763.282335-10131029'
http=urllib3.PoolManager()
url='https://aip.baidubce.com/rpc/2.0/ai_custom/v1/classification/yourselfapiname?access_token='+access_token
f = open('G:/mnist_png/training/8/94.png','rb')
#参数image:图像base64编码 以及top_num参数
img = base64.b64encode(f.read())
#img参数进行一下str转换
params={'image':''+str(img,'utf-8')+'','top_num':5}
#对参数params数据进行json处理
encoded_data = json.dumps(params).encode('utf-8')
print(encoded_data)
request=http.request('POST', 
                      url,
                      body=encoded_data,
                      headers={'Content-Type':'application/json'})
#对返回的byte字节进行处理。Python3输出位串,而不是可读的字符串,需要进行转换
result = str(request.data,'utf-8')
print(result)
  • 示例代码2
import urllib3, json, base64
def image_classification():
    #access_token获取方法请详见API使用说明,请注意access_token有效期为30天,这里仅为了简化编码每一次请求都去获取access_token
    access_token='【access_token】'
    http=urllib3.PoolManager()
    #请将API地址替换为EasyDL所提供的API地址
    url='【API地址】?access_token='+access_token
    #修改图片地址,测试不同图片
    f = open('【本地图片地址】','rb')
    #参数image:图像base64编码以及返回分类数量top_num设置为5
    img = base64.b64encode(f.read())
    #img参数进行一下str转换
    params={'image':''+str(img,'utf-8')+'','top_num':5}
    #对参数params数据进行json处理
    encoded_data = json.dumps(params).encode('utf-8')
    print(encoded_data)
        request=http.request('POST', 
                      url,
                      body=encoded_data,
                      headers={'Content-Type':'application/json'})
    #对返回的byte字节进行处理。Python3输出位串,而不是可读的字符串,需要进行转换
    result = str(request.data,'utf-8')
    print(result)
#输出结果
print(image_classification())
  • 返回的识别结果内容
{
  "log_id": 16307189784052794363, 
  "results": [
    {
      "name": "8", 
      "score": 0.9999861717224121
    }, 
    {
      "name": "9", 
      "score": 5.0299408940190915e-06
    }, 
    {
      "name": "zero", 
      "score": 4.277262632967904e-06
    }, 
    {
      "name": "5", 
      "score": 1.8296633470527013e-06
    }, 
    {
      "name": "6", 
      "score": 9.7080430805363e-07
    }
  ]
}
  • 测试的图片:没发上传。图片原本内容是个手写的数字8

 

 

2018年8月9日增加物体检测示例代码

  • 示例代码
'''
Created on 2018-08-09
定制化图像接口物体检测-Python3 -API示例代码
@author: 小帅丶
'''
import urllib3,base64
import json
access_token='自己应用获取的access_token'
http=urllib3.PoolManager()
url='https://aip.baidubce.com/rpc/2.0/ai_custom/v1/detection/yourselfname?access_token='+access_token
f = open('G:/mnist_png/training/8/94.png','rb')
#参数image:图像base64数据不需要urlencode
img = base64.b64encode(f.read())
print(img)
params={'image':''+str(img,'utf-8')+'','threshold':0.3}
#对数据进行json序列化
encoded_data = json.dumps(params).encode('utf-8')
print(encoded_data)
request=http.request('POST', 
                      url,
                      body=encoded_data,
                      headers={'Content-Type':'application/json'})
#对返回的byte字节进行处理。Python3输出位串,而不是可读的字符串,需要进行转换
result = str(request.data,'utf-8')
print(result)

-----------------------------------------------------代码结束-----------------------------------------------------

确实发现Python简单。而且写的代码也很少。代码仅供参考。

小帅丶的QQ:783021975

 

收藏
点赞
5
个赞
共10条回复 最后由kongling1回复于2019-12-25 18:06
#11kongling1回复于2019-12-25 18:06:20
#10 kongling1回复
使用定制化图像接口实例时发现了一些问题,,比如token获取,https 报错,下面是我修改过的代码。 [代码]
展开

本地python环境是Python 3.7.1 

0
#10kongling1回复于2019-12-25 18:04:55

使用定制化图像接口实例时发现了一些问题,,比如token获取,https 报错,下面是我修改过的代码。

# encoding:utf-8
import urllib3,base64
import json
import certifi

'''
easydl图像分类
https://urllib3.readthedocs.io/en/latest/user-guide.html
https://urllib3.readthedocs.io/en/latest/user-guide.html
'''
http=urllib3.PoolManager(cert_reqs='CERT_REQUIRED',ca_certs=certifi.where())
#获取token
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials' \
       '&client_id=API Key&client_secret=Secret Key'
response = http.request("get",host)

if response:
    print(response.data)

#把字符串转换成字典
dist_s = eval(response.data)
access_token = dist_s['access_token']
print("access_token:"+access_token)

url=request_url+'?access_token='+access_token
request_url = request_url + "?access_token=" + access_token

f = open('2838052319,1186316235.jpg','rb')
img = base64.b64encode(f.read())
print(img)
params={'image':''+str(img,'utf-8')+'','top_num':5}

#对参数params数据进行json处理
encoded_data = json.dumps(params).encode('utf-8')
print("encoded_data:",params)
request_url = "【接口地址"

request=http.request('POST',
                     url,
                     body=encoded_data,
                     headers={'Content-Type':'application/json'})
# print(request.status_cod)
#对返回的byte字节进行处理。Python3输出位串,而不是可读的字符串,需要进行转换
result = str(request.data,'utf-8')
print(result)
0
#9kongling1回复于2019-12-25 15:16:41
#7 wangwei8638回复
碰到这种错误,有没有解决办法: raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='expired.badssl.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[S SL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)'),))
展开

 你看下urllib3 官网文档,用下面方法就就可以解决问题了 https://urllib3.readthedocs.io/en/latest/user-guide.html

pip install certifi

 

>>> import certifi
>>> import urllib3
>>> http = urllib3.PoolManager(
... cert_reqs='CERT_REQUIRED',
... ca_certs=certifi.where()) 。

0
#8hengxh13146回复于2019-05-07 15:19:25

我想请教一个问题:你这个获取到的access_token是网络上的图片的,你这张图片保存到本地了,然后识别图片中的文字还需要这个access_token吗??

0
#7wangwei8638回复于2019-04-26 16:40:43

碰到这种错误,有没有解决办法:

raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='expired.badssl.com',
port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[S
SL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)'),))

0
#6紫星星公主回复于2018-08-27 15:42:52
#5 jgcgzxqq回复
报错ImportError: No module named 'urllib3' 怎么办?  
展开

这因为库没能装上或者,没有在你的路径里面吧

0
#5jgcgzxqq回复于2018-07-28 11:51:27

报错ImportError: No module named 'urllib3' 怎么办?

 

0
#3756665228回复于2018-03-01 10:38:46
#2 天边孤松回复
返回的结果能否包含 物体在图片中的位置信息

这个目前看官网的一些。并不能。你可以提交工单咨询百度技术人员后续是否考虑增加

2
#2天边孤松回复于2018-03-01 09:28:12

返回的结果能否包含 物体在图片中的位置信息

0
TOP
切换版块