介绍
对于我来说百度人工智能图像识别api是真香的存在
500次 准确度高 拿出来偶尔用一下还是可以的 但是你要是搞科研啥的还是务实一点慢慢来自己写!!!
分为以下四步
1.在百度得到token
挺不好找的= =
点击右侧管理控制台
向下滑
点进去 如果你没创建记得新建一个哦
新建好点击管理应用进入如下界面
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()
结果
测试图片:
[{'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 可以通过列表字典的方法解析,这个不是这里的重点。嗯。
缺点
由于本接口是针对所有的图片的一个分类器,当然对特殊的图片精确度不会很理想。不过常用的物品在图片中都会识别出来。