zoukankan      html  css  js  c++  java
  • python对图片的人数分析【人群拥挤警告】

    一、需求统计

      在一个地区,人流密度过大很容易造成踩踏事故,人流量统计动态版可以统计图像中的人体个数和流动趋势,与监控技术结合起来,可以提前预警,进而避免悲剧的发生。

    二、申请api接口权限。

      网址:点这里

      

       

     查看生成的应用,查看APIKEY和SecretKey,在后续的代码中替换对应的内容即可执行。

      

     那么好,到这里就要获取Access Token。因为调用API时必须在URL中带上access_token参数,获取Access Token的流程具体详情去看这个官网:

    但是官网是以代码的代码发送请求,这时我们可以拼接网址 直接去浏览去请求(我是直接去浏览器请求的):

    向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:

    • grant_type: 必须参数,固定为client_credentials
    • client_id: 必须参数,应用的API Key
    • client_secret: 必须参数,应用的Secret Key

    https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】

    查看官网详情点击这里 

     我们所需要的就是access_token

    三、可以去测试,识别图片中的人数了

    具体方法参见:看这里

    下面是我的代码:

    # -*- codeing = utf-8 -*-
    # @Time :  21:15
    # @Auther : ly
    # @File : test.py
    # @Software : PyCharm
    
    
    import base64
    import json
    import urllib.parse
    import urllib.request
    
    jishu = input('超过多少人算拥堵,请输入:')
    count = int(jishu)
    
    request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_num"
    
    # 二进制方式打开图片文件   这是将图片的输入路径, 后面还有一个输出路径
    # 本地路径写法   D:StudyPythonscrapyqiutu.jpg
    f = open('./test4.jpg', 'rb')
    img = base64.b64encode(f.read())
    
    #字典 params    python中的叫法
    params = dict()
    params['image'] = img
    params['show'] = 'true'
    params = urllib.parse.urlencode(params).encode("utf-8")
    #已经请求好的access_tocken
    access_token = '24.210ea7846e76e190a56e8f1d84e90145.2592000.1610022297.282335-23118272'
    request_url = request_url + "?access_token=" + access_token
    request = urllib.request.Request(url=request_url, data=params)
    request.add_header('Content-Type', 'application/x-www-form-urlencoded')
    response = urllib.request.urlopen(request)
    # 获取响应内容  response是响应对象
    content = response.read()
    if content:
        content = content.decode('utf-8')
        # 将返回内容解析成json数据
        data = json.loads(content)
        person_num = data['person_num']
        person_count = int(person_num)
        #输出人数   count为你输入的。
        if person_count > count:
            print('图片中一共有%d人 ,状态为拥堵' % person_count)
        if person_count <= count:
            print('图片中一共有%d人 ,状态为正常' % person_count)
        # 保存识别后的图片
        img_str = data['image']
        img_data = base64.b64decode(img_str)
        with open('./img/jieguo.jpg', 'wb') as f:
            f.write(img_data)
            print("图片保存成功!")

    这是结果的截图:

     

  • 相关阅读:
    POJ 1113 Wall
    POJ 2159 Ancient Cipher
    POJ 3253 Fence Repair
    HDU 5444 Elven Postman
    HDU 5432 Pyramid Split
    数据库 组合查询
    数据库 简单的数据查询
    数据库 聚合函数与分组
    数据库 使用DML语句更改数据
    数据库的数据完整性
  • 原文地址:https://www.cnblogs.com/moxihuishou/p/14108382.html
Copyright © 2011-2022 走看看