using python identifying stars or animals
1、准备工作:安装百度AI为python开发的API SDK模块
在系统命令控制行下使用命令在线安装
pip install baidu-aip
2、准备工作:建立工作环境
以"regstar"在桌面建立一个文件夹,并以"regstar1.0"为名建python脚本放在该文件夹内。用IDLE编辑该脚本:
from aip import AipImageClassify #调用百度AI的API包
3、加入百度AI注册信息
登陆并注册百度AI:百度AI传送门 在注册获得百度AI的APPID和APIKey后 在脚本中定义一个百度AI图像识别功能的SDK函数对象:
APP_ID = 'your app id'
API_KEY = 'your app key'
SECRET_KEY = 'your secret key'
百度图像识别 = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
4、之后我们要定义如何读取文件的方法
def get_file_content(图片路径): #定义一个读取本地图片文件的函数
with open(图片路径, 'rb') as fp:
return fp.read()
5、找到路径需要解析图片的路径和文件名
图片路径 = "文件夹名\\1.jpg" #如果脚本和图片在同一级目录不用加\\“和前面的内容”
6、使用百度图像识别中的动物识别分析该图
result=百度图像识别.animalDetect(get_file_content(图片路径))
百度AI图像识别参考文档:https://ai.baidu.com/docs#/ImageClassify-Python-SDK/top
7、发现返回值是一堆乱码
修改文件名,分析数据发现,展开思索:
得到的内容很繁多,我们真正需要的是? 为何会有多个结果? Score是什么意思?猜一猜 返回的result是什么数据类型?
8、什么是字典?
请看菜鸟教程的解释: http://www.runoob.com/python/python-dictionary.html
键值对key : value
字典: d = {key1 : value1, key2 : value2 }
比如我们现在想要访问字典内特定的值:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
以上实例输出结果: dict['Name']: Zara
9、用字典方式,选择”result“这个key
print(result["result"])
得到如下结果:
[{'score': '0.240384', 'name': '大耳蝠'}, {'score': '0.166646', 'name': '棕蝠'}, {'score': '0.157134', 'name': '大鼠耳蝠'}, {'score': '0.0905424', 'name': '吸血蝠'}, {'score': '0.0892673', 'name': '狐蝠'}, {'score': '0.0849477', 'name': '菊头蝠'}]
10、然后用数组方式,找数组里第0项
print(result["result"][0])
得到进一步筛选的结果:
{'score': '0.240384', 'name': '大耳蝠'}
11、最后再用字典,取出”name“这个key对应的键值
print(result["result"][0]["name"])
大耳蝠