# coding=utf-8 import sys import json import base64 # 保证兼容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 # 百度云控制台获取到ak,sk以及 # EasyDL官网获取到URL # ak API_KEY = '70AElr8G2Za3nRCnTS3XGtLp' # sk SECRET_KEY = 'qWPeFt6m1Y6GgmaBplwlTiOtlfn0enBQ' # url EASYDL_OBJECT_DETECT_URL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/detection/wutijiance0419" """ 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, json.dumps(data)) 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) if __name__ == '__main__': # 获取access token token = fetch_token() # 拼接url url = EASYDL_OBJECT_DETECT_URL + "?access_token=" + token filename = "bb5.jpg" file_content = read_file(filename) # 请求接口 response = request(url, { 'image': base64.b64encode(file_content), 'threshold': 0.6 }) result_json = json.loads(response) result = result_json["results"] if len(result) == 0: print("图片中未识别到丝螺母") else: for obj in result: loc = obj["location"] print("物体类型:" + str(obj["name"])) print("置信度:" + str(obj["score"])) print("物体位置坐标:") print(" 左:" + str(loc["left"]) + " 上:" + str(loc["top"]) + " 长:" + str(loc["width"]) + " 高:" + str(loc["height"])) print("")
请登录后评论
TOP
切换版块
python3部分的编码处理有些问题,修改了下: