python实现调用百度图像识别api得到图片识别与检测类别和详细信息以及相关准确度

介绍

对于我来说百度人工智能图像识别api是真香的存在

500次  准确度高  拿出来偶尔用一下还是可以的   但是你要是搞科研啥的还是务实一点慢慢来自己写!!!

python实现调用百度图像识别api得到图片识别与检测类别和详细信息以及相关准确度_第1张图片

分为以下四步

1.在百度得到token

挺不好找的= =  

python实现调用百度图像识别api得到图片识别与检测类别和详细信息以及相关准确度_第2张图片

点击右侧管理控制台

向下滑

python实现调用百度图像识别api得到图片识别与检测类别和详细信息以及相关准确度_第3张图片

点进去  如果你没创建记得新建一个哦  

python实现调用百度图像识别api得到图片识别与检测类别和详细信息以及相关准确度_第4张图片

新建好点击管理应用进入如下界面

python实现调用百度图像识别api得到图片识别与检测类别和详细信息以及相关准确度_第5张图片

2.通过api验证得到token

from urllib import request
import ssl
import json
gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
myid='0x6########XYwzxTfOsj'    #这是你的apikey
mysecret='uX6l############oSKql6HB' # 这是你的apisecret

host = 'https://aip.baidubce.com/oauth/2.0/token?grant_' \
       'type=client_credentials&client_id='+myid+'&client_secret='+mysecret
req = request.Request(host)
response = request.urlopen(req, context=gcontext).read().decode('UTF-8')
result = json.loads(response)
# if (result):
#     print(result)

##  返回的

3.图片编码

import base64
f = open('test7.jpg', 'rb')  #输入你的图片路径
img = base64.b64encode(f.read())

4.返回检测结果

import requests
host = 'https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general'
headers={
   'Content-Type':'application/x-www-form-urlencoded'
}
access_token= result['access_token']
host=host+'?access_token='+access_token

data={}
data['access_token']=access_token
data['image'] =img
res = requests.post(url=host,headers=headers,data=data)
req=res.json()
print(req['result'])

整体代码 (把三个参数写好直接使用)

from urllib import request
import ssl
import json

## 必填参数
apiId='0x6KXXXXXXXXXTfOsj'
apiSecret='uX6loIXXXXXXXXXXx5d1noSKql6HB '
pic='test7.jpg'

def get_token():
    gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
    # client_id 为官网获取的AK, client_secret 为官网获取的SK
    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_' \
           'type=client_credentials&client_id=' + apiId + '&client_secret=' + apiSecret
    req = request.Request(host)
    response = request.urlopen(req, context=gcontext).read().decode('UTF-8')
    result = json.loads(response)
    return result


# if (result):
#     print(result)
def get_pic(picname):
    import base64
    f = open(picname, 'rb')
    img = base64.b64encode(f.read())
    return img

def statr_api(img,result):
    import requests
    host = 'https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general'
    headers={
       'Content-Type':'application/x-www-form-urlencoded'
    }
    access_token= result['access_token']
    host=host+'?access_token='+access_token

    data={}
    data['access_token']=access_token
    data['image'] =img
    res = requests.post(url=host,headers=headers,data=data)
    req=res.json()
    print(req['result'])

def main():
    token=get_token()
    img=get_pic(pic)
    statr_api(img,token)
if __name__ == '__main__':
    main()

结果

测试图片:

python实现调用百度图像识别api得到图片识别与检测类别和详细信息以及相关准确度_第6张图片

[{'score': 0.546485, 'root': '非自然图像-彩色动漫', 'keyword': '卡通动漫人物'}, {'score': 0.407504, 'root': '非自然图像-屏幕截图', 'keyword': '屏幕截图'}, {'score': 0.242234, 'root': '商品-绘画', 'keyword': '图画'}, {'score': 0.123088, 'root': '动物-其他', 'keyword': '鸟类'}, {'score': 0.00414, 'root': '动物-鸟类', 'keyword': '瘤头鸭'}]
返回的json  可以通过列表字典的方法解析,这个不是这里的重点。嗯。

缺点

由于本接口是针对所有的图片的一个分类器,当然对特殊的图片精确度不会很理想。不过常用的物品在图片中都会识别出来。

你可能感兴趣的:(python,深度学习,经验分享)