概述
这个算是一个免费给百度打的广告吧,百度智能云里面有个百度识图接口,简介如下,只要有百度账号就能申请,每天500次免费调用,我无意中点进去的,就当是记录一下。
EasyDL是百度大脑推出的定制化AI训练及服务平台,支持面向各行各业有定制AI需求的企业用户及开发者使用。支持从数据管理与数据标注、模型训练、模型部署一站式AI开发流程,通过原始图片、文本、音频、视频类数据经过EasyDL加工、学习、部署可发布为公有云API、设备端SDK、本地化部署及软硬一体产品。
使用方法:
1.注册百度账号后进入百度ai开放平台,登录图像识别控制台,创建一个app,接口相关信息就有了。
2.代码
# coding=utf-8
import sys
import json
import base64
import os
# 保证兼容python2以及python3
IS_PY3 = sys.version_info.major == 3
if IS_PY3:
from urllib.request import urlopen
from urllib.request import Request
from urllib.error import URLError
from urllib.parse import urlencode
from urllib.parse import quote_plus
else:
import urllib2
from urllib import quote_plus
#from urllib2 import urlopen
#from urllib2 import Request
#from urllib2 import URLError
from urllib import urlencode
# 防止https证书校验不正确
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
API_KEY = '这里填你的api key'
SECRET_KEY = '一样,secret key'
#这里填你图像识别要调用的接口,我这里用的是图片通用识别
#会把图片里所有信息都识别出来,试了下感觉能有50-60%的正确识别率
IMAGE_RECOGNIZE_URL = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general"
#获取token的url,这个应该是固定的
"""
TOKEN start """
TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'
"""
获取token
"""
def fetch_token():
params = {'grant_type': 'client_credentials',
'client_id': API_KEY,
'client_secret': SECRET_KEY}
post_data = urlencode(params)
if (IS_PY3):
post_data = post_data.encode('utf-8')
req = Request(TOKEN_URL, post_data)
try:
f = urlopen(req, timeout=5)
result_str = f.read()
except URLError as err:
print(err)
if (IS_PY3):
result_str = result_str.decode()
result = json.loads(result_str)
if ('access_token' in result.keys() and 'scope' in result.keys()):
if not 'brain_all_scope' in result['scope'].split(' '):
print ('please ensure has check the
ability')
exit()
return result['access_token']
else:
print ('please overwrite the correct API_KEY and SECRET_KEY')
exit()
"""
读取文件
"""
def read_file(image_path):
f = None
try:
f = open(image_path, 'rb')
return f.read()
except:
print('read image file fail')
return None
finally:
if f:
f.close()
"""
调用远程服务
"""
def request(url, data):
req = Request(url, data.encode('utf-8'))
has_error = False
try:
f = urlopen(req)
result_str = f.read()
if (IS_PY3):
result_str = result_str.decode()
return result_str
except
URLError as err:
print(err)
"""
调用菜品识别接口并打印结果
"""
def print_result(filename, url):
# 获取图片,我这里用的是桌面的一个文件夹,遍历里面的jpg来识别。
for root,dir,filenames in os.walk(r"C:UsersabcDesktop新建文件夹"):
for filename in filenames:
if filename.endswith(".jpg"):
filename=os.path.join(root,filename)
file_content = read_file(filename)
print(filename)
response = request(url, urlencode(
{
'image': base64.b64encode(file_content),
'top_num': 1
}))
result_json = json.loads(response)
# 打印图片结果
for data in result_json["result"]:
print(u"
菜品名称: " + data["keyword"])
if data['root']:
print(u"
菜品热量: " + data["root"])
if __name__ == '__main__':
# 获取access token
token = fetch_token()
# 拼接图像识别url
url = IMAGE_RECOGNIZE_URL + "?access_token=" + token
# 菜品图1
print("菜品1")
print_result("./food1.jpg", url)
# 菜品图3
print("菜品2")
print_result("./food2.jpg", url)
# 菜品图3
print("菜品3")
print_result("./food3.jpg", url)
最后
以上就是风中小白菜为你收集整理的python学习笔记11 百度识图的全部内容,希望文章能够帮你解决python学习笔记11 百度识图所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复