Ai技术的发展,催生了智慧城市,智慧交通是其中很重要的一环。百度AI车流量统计(动态版)能够检测图片中所有机动车辆,返回每辆车的类型和坐标位置,以及运动轨迹。应用于智慧交通领域,可以很方便地监控城市道路交通情况,实现交通拥堵预警。利用大数据挖掘交通流量规律,可以对车流进行合理疏导。另外,对一些限行城市,还可以通过车牌识别、车型识别等技术,对违规车辆进行监控。

一.平台接入

此步骤比较简单,不多阐述。可参照之前文档:

https://ai.baidu.com/forum/topic/show/943028

二.接口API分析

1.接口API:

https://ai.baidu.com/docs#/ImageClassify-API/0d270ea1

(1)接口描述

根据传入的连续视频图片序列,进行车辆检测和追踪,返回每个车辆的坐标位置、车辆类型(包括小汽车、卡车、巴士、摩托车、三轮车5大类)。在原图中指定区域,根据车辆轨迹判断驶入/驶出区域的行为,统计各类车辆的区域进出车流量,可返回含统计值和跟踪框的渲染图。

注:邀测的接口,不能直接在控制台调用,可通过提交工单申请开通测试权限。

(2)请求说明

需要用到的信息有:

请求URL:https://aip.baidubce.com/rest/2.0/image-classify/v1/traffic_flow

Header格式:Content-Type:application/x-www-form-urlencoded

(3)返回示例

检测到2辆小汽车、1辆卡车,3条轨迹,1辆卡车离开区域:

{

"vehicle_num":

{

"car":2,

"truck":1,

...

"tricycle":0

},

"vehicle_info":

[

{

"ID":3

"location":

{

"left": 100,

"top": 200,

"width": 200,

"height": 400,

}

"type": "car"

},

{

"ID": 5

"location":

{

"left": 400,

"top": 200,

"width": 200,

"height": 400,

}

"type": "car"

},

{

"ID": 6

"location":

{

"left": 600,

"top": 200,

"width": 300,

"height": 400,

}

"type": "truck"

}

],

“vehicle_count”:

{

"car":

{

"in":0,

"out":0

},

"truck":

{

"in":0

"out":1

},

...

}

}

2.获取access_token

#client_id 为官网获取的AK, client_secret 为官网获取的SK

client_id =【百度云应用的AK】

client_secret =【百度云应用的SK】

#获取token

def get_token():

host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret

request = urllib.request.Request(host)

request.add_header('Content-Type', 'application/json; charset=UTF-8')

response = urllib.request.urlopen(request)

token_content = response.read()

if token_content:

token_info = json.loads(token_content.decode("utf-8"))

token_key = token_info['access_token']

return token_key

三.识别结果

识别结果方面:选取一段渲染后的输出图片,结果只能用“牛X”来形容。车辆识别结果比较准确,车辆分类基本正确。对远处车辆识别程度不高,当然这里可能受图片质量是否清晰等因素影响。

处理速度方面:每张图片处理时间在1-2s,相对于视频来说,略有卡顿。

四.源码共享

# -*- coding: utf-8 -*-

#!/usr/bin/env python

import os

import requests

import base64

import json

from pprint import pprint

import time

import io

from io import BytesIO

import cv2

import numpy as np

from PIL import Image

import glob

#client_id 为官网获取的AK, client_secret 为官网获取的SK

api_key = '77ibV7Kvyo8bMh3FovLzxc6D'

secret_key = 'EdKVNt56ce1FUIdB0oCZYHwO3uPKSiEz'

class Traffic_flowRecognizer(object):

def __init__(self, api_key, secret_key):

self.access_token = self._get_access_token(api_key=api_key, secret_key=secret_key)

self.API_URL = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/traffic_flow' + '?access_token=' \

+ self.access_token

#获取token

@staticmethod

def _get_access_token(api_key, secret_key):

api = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials' \

'&client_id={}&client_secret={}'.format(api_key, secret_key)

rp = requests.post(api)

if rp.ok:

rp_json = rp.json()

print(rp_json['access_token'])

return rp_json['access_token']

else:

print('=> Error in get access token!')

def get_result(self, params):

rp = requests.post(self.API_URL, data=params)

if rp.ok:

print('=> Success! got result: ')

rp_json = rp.json()

pprint(rp_json)

return rp_json

else:

print('=> Error! token invalid or network error!')

print(rp.content)

return None

#识别车流量

def detect(self):

###对视频进行抽帧后,连续读取图片

WSI_MASK_PATH = 'E:/cheliu/chouzhen/'#存放图片的文件夹路径

paths = glob.glob(os.path.join(WSI_MASK_PATH, '*.jpg'))

paths.sort()

data_list = []

c = 1

for path in paths:

f = open(path, 'rb')

img_str = base64.b64encode(f.read())

data_list.append(img_str)

params = {'area':'1,269,400,269,400,180,1,180','case_id':1214,'case_init':'false','image':data_list,'show':'true'}

tic = time.clock()

rp_json = self.get_result(params)

toc = time.clock()

print('单次处理时长: '+'%.2f' %(toc - tic) +' s')

img_b64encode = rp_json['image']

img_b64decode = base64.b64decode(img_b64encode) # base64解码

#显示检测结果图片

image = io.BytesIO(img_b64decode)

img = Image.open(image)

img.show()

#存储检测结果图片

file=open('E:/cheliu/out/'+str(c)+'.jpg','wb')

file.write(img_b64decode)

file.close()

c = c + 1

if __name__ == '__main__':

recognizer = Traffic_flowRecognizer(api_key, secret_key)

recognizer.detect()

五.意见建议

1.目前API接口支持传入图片流,视频预处理比较复杂,后续是否有直接传入视频流的接口,这样的话对用户会更加友好。

2.对输入图片质量还要有一定要求,由于拍摄场景的原因,距离远、夜晚光线不好等造成图片模糊,均会影响识别效果,所以调用接口需要对抓拍图片进行筛选,建议明确图片质量要求。

3.渲染后输出的图片,车辆信息文本输出格式建议优化,如前面图示,输出文本仅打印出一部分,而且分的太开,颜色也不明显。

python视频车流量计数_【使用攻略】【图像识别】车流量统计(动态版)相关推荐

  1. 学python数据挖掘自学路线图_学习攻略 | 数据挖掘工程师学习路线图

    原标题:学习攻略 | 数据挖掘工程师学习路线图 最近秋招也已经慢慢接近尾声了,从去年 8 月底开始,先后参加了 datacastle ,阿里天池,牛客网各自举办的数据挖掘比赛(都是 top10 ),今 ...

  2. 有趣的Python Challenge编程解谜游戏攻略二(5-9关)

    **有趣的Python Challenge编程解谜游戏攻略二(5-9关)** 介绍 游戏介绍 0-4关攻略 写在前面 关卡 第5关 第6关 第7关 第8关 第9关 链接总结 第10关预告 介绍 游戏介 ...

  3. 异星工厂 自动机器人_异星工厂自动科研系统建造技巧_图文攻略

    异星工厂自动科研系统建造技巧_图文攻略 1.建立基地第一件事是把周围的煤铁铜石用传送带串联循环,可以建一条大环路,然后把各个资源点产出的资源循环到上面,铁铜煤石采集机器的比例最好保持6:2:1:1. ...

  4. Python的IDE:基于Eclipse/MyEclipse软件的PyDev插件配置python的开发环境(不同python项目加载不同版本的python)—从而实现Python编程图文教程之详细攻略

    Python的IDE:基于Eclipse/MyEclipse软件的PyDev插件配置python的开发环境(不同python项目加载不同版本的python)-从而实现Python编程图文教程之详细攻略 ...

  5. Python Pandas读取修改excel操作攻略​​​​​​​

    Python Pandas读取修改excel操作攻略 环境:python 3.6.8 以某米赛尔号举个例子吧: >>> pd.read_excel('1.xlsx', sheet_n ...

  6. java 网络流量统计_【Java】人流量统计-动态版之摄像头识别显示

    [Java]人流量统计-动态版之视频转图识别请访问 http://ai.baidu.com/forum/topic/show/940413 本文是基于上一篇进行迭代的.本文主要是以摄像头画面进行人流量 ...

  7. python网络爬虫_一篇文章教会你利用Python网络爬虫获取穷游攻略

    点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 穷游网提供原创实用的出境游旅行指南.攻略,旅行社区和问答交流平台, ...

  8. c++使用单向链表存储一组有序数据_初试攻略丨计算机考研中数据结构知识点总结,硬核!...

    点击蓝字的小伙伴奖励酥鸡哦 苏世计算机考研,程序猿专属的学习分享社区 [声明:本文为原创文章,未经同意,严禁转载和抄袭,违者将追究其法律责任] 正文字2607,预计阅读7分钟 / 写在前面的话 / 初 ...

  9. 创意留言墙图片_年会攻略2|创意合影墙、特色文化墙,有点意思启动仪式,继续玩出彩!!...

    (点击小图放大)你还记得这张思维导图吗? 自从上周我们推出年会攻略part 1 小编的微信都被轰炸了(心疼抱抱自己) 除了问相关的场地推荐,和签到创意点外 私信小编最多的就是 年会攻略2什么时候发啊啊 ...

  10. Python 爬取蚂蜂窝旅游攻略 (+Scrapy框架+MySQL)

    前言:使用python+scrapy框架爬取蚂蜂窝旅游攻略 Git代码地址:https://github.com/qijingpei/mafengwo 获取代理IP地址的开源项目ProxyPool-m ...

最新文章

  1. 开发高性能并发应用不是一件容易的事情。这类应用的例子包括高性能Web服务器、游戏服务器和搜索引擎爬虫...
  2. ISA 2006 允许使用QQ
  3. c语言计算时间的编程,C语言实现时间戳转日期的算法(推荐)
  4. 手工收集awr报告_oracle手工生成AWR报告方法记录
  5. oc之Mac-响应链(Responder Chain)
  6. 使用反应流作为Drools的数据源
  7. python颜色填充代码_求懂WORD的大佬怎么一次性填充颜色或者使用python识别
  8. gridview绑定数据mysql_【gridview控件】怎么绑定数据库并显示?
  9. 【sklearn第十九讲】高斯混合模型
  10. 技术面试问项目难题如何解决的_技术面试中,遇到不会回答的问题怎么破?
  11. 一文搞懂程序流程图详解
  12. 图形评审技术(GERT)与计划评审技术(PERT)
  13. 码云 zheng 项目部署过程记录 eclispe部署过程
  14. Window安装Redis并设置为开机启动
  15. 第一个Python爬虫-抓取煎蛋网上图片
  16. Python中循环题目二的练习(for、while、if)
  17. SQL 基础知识扫盲
  18. 百度Ai实现网络图片文字识别--Java
  19. Python内置函数--super()
  20. 遮天 | 实战绕过卡巴斯基、Defender上线CS和MSF及动态命令执行...

热门文章

  1. 知识图谱——TransE模型原理
  2. 第六篇 | 解决linux环境中mysql默认端口3306无法连接问题
  3. 事业单位计算机常识PPT,计算机基础知识:PPT常用操作(六)
  4. Linux服务器安全加固
  5. Python中文手册——开胃菜
  6. 长生诀手游源码服务端
  7. 一个js内存泄露的好例子
  8. 股票和数据分析--加权平均数
  9. android ttc字体,android从ttc字体设置默认字体和字体系列
  10. 获取文件哈希值_系统装机|两款最经典的文件校验工具,检查镜像文件的完整性。...