百度AI图像处理—图像主体识别调用教程(基于Python3-附Demo)

首先来看一下识别的效果:这里需要完整代码以及SDK的请点击此处下载:百度AI图像主体识别Demo

首先需要注册百度账号并且创建对应的应用,这里具体方法如图:

访问:http://ai.baidu.com/  点击控制台

登录后创建应用:

此处注意:图像识别中的各项功能共用的是一个SDK包,只是不同功能实现的时候使用的函数以及返回参数不同,点击完创建应用后就可以生成三个我们后期识别过程中必须使用的参数:AppID,API Key和secert key,这里我们可以点击查看应用详情来获取

至此,前期的准备工作就完成了,这时我们通过Pip或者官网直接下载SDK包,pip下载指令为:

这里支持Python版本:2.7.+ ,3.+

如果已安装pip,执行pip install baidu-aip即可。
如果已安装setuptools,执行python setup.py install即可。

接下来,在下载的SDK文档下新建Python文件,当然你也可以使用导入包的模式:

然后创建一个AipImageClassify(亦可以简单的理解为一个和百度的一个连接),这里代码为:

from aip import AipImageClassify

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

以上的三个参数即为我们开始调用的时候所获得的三个值,这里需要填入操作,即可,紧接着调用我们需要使用的具体函数就可以了(比如图像主体识别功能)

""" 读取图片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

image = get_file_content('example.jpg')

""" 调用图像主体检测 """
client.objectDetect(image);

""" 如果有可选参数 """
options = {}
options["with_face"] = 0

""" 带参数调用图像主体检测 """
client.objectDetect(image, options)

 修改图片路径后我们就可以实现图像主体的识别功能了,但是百度这个SDK比较麻烦的就是他的返回值是随机排序的,有时是

{'log_id': 7346640957855264074, 'result': {'width': 382, 'height': 299, 'top': 50, 'left': 178}}

有时又是这样的:

{'result': {'height': 299, 'width': 382, 'left': 178, 'top': 50}, 'log_id': 2876165888495195498}

这时对于我们获取某个数值就带来了一定的麻烦,这里笔者采用一种字符串切割的方法来解决这一问题,解决完成后分别将,left,top,width和height三个数值保存到文件中(或者直接使用),这里附上完整的程序代码,如果你有需要也可以在文章的开头出下载整个示例Demo,填入您的AppID等信息后即可实现:

import json
from aip import AipImageClassify
""" 你的 APPID AK SK """
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

""" 读取图片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

image = get_file_content('1.bmp')

""" 调用图像主体检测 """
client.objectDetect(image);

""" 如果有可选参数 """
options = {}
options["with_face"] = 0

""" 带参数调用图像主体检测 """
result=client.objectDetect(image, options)

print(result)
result_txt=json.dumps(result,ensure_ascii=False)

"""left切割写文件"""
left_cut = 'left'
left_position = result_txt.index(left_cut)
left_value=result_txt[left_position+7:left_position+13]
left_space_position=left_value.find(',')
left_value_compare=left_value[0:left_space_position]
left_sign_position=left_value_compare.find('}')
if left_sign_position == -1:
    left_value = left_value[0:left_space_position]
else:
    left_value = left_value[0:left_space_position-1]
file = open('left.ini', 'w')  # 打开文件
file.write(left_value)  # 写入
file.close()  # 关闭文件
left_value='left:'+left_value
print(left_value)

"""width切割写文件"""
width_cut = 'width'
width_position = result_txt.index(width_cut)
width_value=result_txt[width_position+8:width_position+13]
width_space_position=width_value.find(',')
width_value_compare=width_value[0:width_space_position]
width_sign_position=width_value_compare.find('}')
if width_sign_position == -1:
    width_value = width_value[0:width_space_position]
else:
    width_value = width_value[0:width_space_position-1]
file = open('width.ini', 'w')  # 打开文件
file.write(width_value)  # 写入
file.close()  # 关闭文件
width_value='width:'+width_value
print(width_value)


"""top切割写文件"""
top_cut = 'top'
top_position = result_txt.index(top_cut)
top_value=result_txt[top_position+6:top_position+13]
top_space_position=top_value.find(',')
top_value_compare=top_value[0:top_space_position]
top_sign_position=top_value_compare.find('}')
if top_sign_position == -1:
    top_value = top_value[0:top_space_position]
else:
    top_value = top_value[0:top_space_position-1]
file = open('top.ini', 'w')  # 打开文件
file.write(top_value)  # 写入
file.close()  # 关闭文件
top_value='top:'+top_value
print(top_value)


"""height切割写文件"""
height_cut = 'height'
height_position = result_txt.index(height_cut)
height_value=result_txt[height_position+9:height_position+13]
height_space_position=height_value.find(',')
height_value_compare=height_value[0:height_space_position]
height_sign_position=height_value_compare.find('}')
if height_sign_position == -1:
    height_value = height_value[0:height_space_position]
else:
    height_value = height_value[0:height_space_position-1]
file = open('height.ini', 'w')  # 打开文件
file.write(height_value)  # 写入
file.close()  # 关闭文件
height_value='height:'+height_value
print(height_value)


file = open('test.txt','w')			# 打开文件
file.write(result_txt)			# 写入
file.close()			    		# 关闭文件

 

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
【项目介绍】 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者企业员工下载,适合小白学习或者实际项目借鉴参考! 当然也可作为毕业设计、课程设计、课程作业、项目初期立项演示等。如果基础还行,可以在此代码基础之上做改动以实现更多功能。 1. 项目结构 * util:核心工具包 * config.py:文件夹目录配置 * innerCircle.py:虹膜内圆检测 * outerCircle.py:虹膜外圆检测 * normalize.py:虹膜区域规范化 * feature.py:提取虹膜特征 * contrast.py:虹膜特征比对 * photo:虹膜图片数据集 * feature:保存生成的虹膜特征数据集,与photo一一对应 * iris-web:签到系统web端 * takePhoto.py:采集虹膜图片 * run.py:虹膜采集识别 * mqtt.py:测试服务器连接 * demo.ipynb:核心方法调用示例 2. 使用方法 首先使用takePhoto.py采集虹膜数据集,按p键拍摄,再次按p保存到/photo目录中,如果不满意按r重拍,按b退出拍摄。 注意:图片序号每次从1开始一次增大,多次运行会导致覆盖,需要拍摄后手动分类移动,每个人的左右眼虹膜不同。 虹膜采集好后按/photo中的目录格式分类,运行demo.ipynb中的第四段代码,提取数据库中所有图片的特征并保存到/feature中。 然后使用run.py拍摄待检测者的虹膜,按p键拍摄,再次按p检测,如果不满意按r重拍,按b退出拍摄。 3. 核心算法示例 参考demo.ipynb中的代码 4. 硬件系统与签到系统结构 选用焦距5.0mm可视角度65°的USB红外摄像头(手动旋转镜头调焦),以及12V红外LED补光灯。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值