1 文档
https://ai.baidu.com/ai-doc/BODY/6k3cpymz1
2 开启服务
注意需要30分钟最有生效
下载SDK
https://ai.baidu.com/sdk#body
安装使用Python SDK有如下方式:
- 如果已安装pip,执行
pip install baidu-aip
即可。 - 如果已安装setuptools,执行
python setup.py install
即可。
https://ai.baidu.com/ai-doc/BODY/Rk3cpyo93
查看应用详情
测试代码
#!/usr/bin/python # -*- coding: UTF-8 -*- from aip import AipBodyAnalysis import json #个人注册的信息 APP_ID="24719363" API_KEY="ynnpcyBSQ5eyiNso67TIsfqs" SECRET_KEY="rax12T8k8EPztYyG5C976O3oCxy9lG64" client = AipBodyAnalysis(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.png') """ 调用人体检测与属性识别 """ client.bodyAttr(image); """ 如果有可选参数 """ options = {} options["type"] = "face_mask" ''' 1)可选值说明: gender-性别, age-年龄阶段, lower_wear-下身服饰, upper_wear-上身服饰, headwear-是否戴帽子, face_mask-是否戴口罩, glasses-是否戴眼镜, upper_color-上身服饰颜色, lower_color-下身服饰颜色, cellphone-是否使用手机, upper_wear_fg-上身服饰细分类, upper_wear_texture-上身服饰纹理, orientation-身体朝向, umbrella-是否撑伞, bag-背包, smoke-是否吸烟, vehicle-交通工具, carrying_item-是否有手提物, upper_cut-上方截断, lower_cut-下方截断, occlusion-遮挡, is_human-是否正常人体 2)type 参数值可以是可选值的组合,用逗号分隔;如果无此参数默认输出全部22个属性 ''' """ 带参数调用人体检测与属性识别 """ result_http=client.bodyAttr(image, options) #print(result_http) #{'person_num': 1, 'person_info': [{'attributes': {'face_mask': {'score': 0.9999989867210388, 'name': '戴口罩'}}, #'location': {'score': 0.9544383883476257, 'top': 46, 'left': 72, 'width': 400, 'height': 442}}], #'log_id': 1427995178237228183} #result_http=json.loads(str(result_http)) if result_http["person_num"]>0: #print(result_http["person_num"])#检测到有人 #print(result_http["person_info"][0]["attributes"]["face_mask"]["name"]) kouhzao=result_http["person_info"][0]["attributes"]["face_mask"]["name"] print(kouhzao)
函数封装调用
#!/usr/bin/python # -*- coding: UTF-8 -*- from aip import AipBodyAnalysis import json def API_fingMask(picname='example.png'): #个人注册的信息 APP_ID="24719363" API_KEY="ynnpcyBSQ5eyiNso67TIsfqs" SECRET_KEY="rax12T8k8EPztYyG5C976O3oCxy9lG64" client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY) """ 读取图片 """ def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read() image = get_file_content(picname) """ 调用人体检测与属性识别 """ client.bodyAttr(image); """ 如果有可选参数 """ options = {} options["type"] = "face_mask" ''' 1)可选值说明: gender-性别, age-年龄阶段, lower_wear-下身服饰, upper_wear-上身服饰, headwear-是否戴帽子, face_mask-是否戴口罩, glasses-是否戴眼镜, upper_color-上身服饰颜色, lower_color-下身服饰颜色, cellphone-是否使用手机, upper_wear_fg-上身服饰细分类, upper_wear_texture-上身服饰纹理, orientation-身体朝向, umbrella-是否撑伞, bag-背包, smoke-是否吸烟, vehicle-交通工具, carrying_item-是否有手提物, upper_cut-上方截断, lower_cut-下方截断, occlusion-遮挡, is_human-是否正常人体 2)type 参数值可以是可选值的组合,用逗号分隔;如果无此参数默认输出全部22个属性 ''' """ 带参数调用人体检测与属性识别 """ result_http=client.bodyAttr(image, options) #print(result_http) #{'person_num': 1, 'person_info': [{'attributes': {'face_mask': {'score': 0.9999989867210388, 'name': '戴口罩'}}, #'location': {'score': 0.9544383883476257, 'top': 46, 'left': 72, 'width': 400, 'height': 442}}], #'log_id': 1427995178237228183} #result_http=json.loads(str(result_http)) kouhzao="等待识别..." if result_http["person_num"]>0: #print(result_http["person_num"])#检测到有人 #print(result_http["person_info"][0]["attributes"]["face_mask"]["name"]) kouhzao=result_http["person_info"][0]["attributes"]["face_mask"]["name"] #print(kouhzao)#有口罩 没口罩 else: kouhzao="没有检测到人,请对准相机重新识别" print(kouhzao) return kouhzao #主函数调用测试 API_fingMask()
代表没有开通服务,要么领取的免费还没开通,要么付费的还没出来。
这里领取的是免费的,说30分钟起效。
测试结果1-没有检测到人,所以也没有检测口罩,务必要保证能检测出来是个人
测试结果2-检测人成功-戴口罩