• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
python使用百度api识别口罩-

 

 

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-检测人成功-戴口罩

 

 

 

posted on 2021-08-18 21:52  MKT-porter  阅读(450)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3