python画像分析,python图像算法

  python画像分析,python图像算法

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

  一.平台准入

  这一步比较简单,就不细说了。参考以前的文件:

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

  二。接口API分析

  1.接口API:

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

  (1)接口描述

  根据连续视频图片的传入顺序,对车辆进行检测和跟踪,返回每辆车的坐标位置和车型(包括轿车、货车、公交车、摩托车、三轮车五大类)。在原始图像中的指定区域,可以根据车辆轨迹判断进入/离开该区域的行为,统计该区域内各种车辆的交通流量,并返回带有统计值和跟踪框的渲染图像。

  注意:邀请测试的界面不能在控制台中直接调用,但是可以通过提交工单申请开放测试权限。

  (2)要求解释

  所需信息包括:

  请求URL:3359aip.baidubce.com/rest/2.0/image-classify/v1/traffic流程

  header:content-type:application/x-www-form-urlencoded

  (3)返回例子。

  发现2辆汽车,1辆卡车,3条轨道,1辆卡车离开该地区:

  {

  “车辆编号”:

  {

  汽车:2,

  卡车:1,

  .

  三轮车:0

  },

  “车辆信息”:

  [

  {

  ID:3

  位置:

  {

  左:100,

  顶部:200,

  宽度:200,

  高度:400,

  }

  类型:汽车

  },

  {

  ID: 5

  位置:

  {

  左边:400,

  顶部:200,

  宽度:200,

  高度:400,

  }

  类型:汽车

  },

  {

  ID: 6

  位置:

  {

  左边:600,

  顶部:200,

  宽度:300,

  高度:400,

  }

  类型:卡车

  }

  ],

  “车辆数量”:

  {

  汽车:

  {

   in:0,

   out:0

  },

  “卡车”:

  {

   in:0

   out:1

  },

  .

  }

  }

  2.获取访问令牌

  #client_id是官网收购的AK,client_secret是官网收购的SK。

  client _ id=[百度云应用的AK]

  client _ secret=[百度云应用的SK]

  #获取令牌

  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(主机)

  request . add _ header( Content-Type , application/JSON;charset=UTF-8 )

  response=urllib . request . urlopen(request)

  token_content=response.read()

  如果令牌_内容:

  token _ info=JSON . loads(token _ content . decode( utf-8 ))

  令牌密钥=令牌信息[访问令牌]

  返回令牌_密钥

  三。鉴定结果

  识别:选择一个渲染输出图片,结果只能用“牛X”来形容。车辆识别结果准确,车辆分类基本正确。远处车辆的识别度不高,当然可能受清晰画质等因素影响。

  处理速度:每张图片的处理时间为1-2s,与视频相比略有卡顿。

  四。源代码共享

  # -*-编码:utf-8 -*-

  #!/usr/bin/env python

  导入操作系统

  导入请求

  导入base64

  导入json

  从pprint导入pprint

  导入时间

  导入io

  从io导入字节

  导入cv2

  将numpy作为np导入

  从PIL进口图片

  导入全球

  #client_id是官网收购的AK,client_secret是官网收购的SK。

  API _ key= 77 IBV 7kv yo 8 bmh 3 fovlzxc 6d

  secret _ key= edk vnt 56 ce 1 ful db 0 oczyhwo 3 upk siez

  class Traffic_flowRecognizer(对象):

  def __init__(self,api_key,secret_key):

  self.access_token=self。_ get _ access _ token(API _ key=API _ key,secret_key=secret_key)

  自我。API _ URL= https://AIP . baidubce . com/rest/2.0/image-classify/v1/traffic _ flow ?访问令牌= \

  self.access _令牌

  #获取令牌

  @静态方法

  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={} .格式(api_key,secret_key)

  rp=requests.post(api)

  如果rp.ok:

  rp_json=rp.json()

  print(rp_json[access_token])

  返回rp_json[访问令牌]

  否则:

  打印(=获取访问令牌时出错!)

  定义get_result(自身,参数):

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

  如果rp.ok:

  打印(=成功!得到结果: )

  rp_json=rp.json()

  pprint(rp_json)

  返回rp_json

  否则:

  打印(=错误!令牌无效或网络错误!)

  打印(参考内容)

  不返回

  #识别车流量

  定义检测(自身):

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

  WSI _面具_路径= E:/刘彻/仇真/#存放图片的文件夹路径

  PATH=glob。glob(OS。路径。加入(WSI _掩码_路径, *。jpg ))

  paths.sort()

  data_list=[]

  c=1

  对于路径中的路径:

  f=打开(路径,“经常预算”)

  img _ str=base64。b 64编码(f . read())

  数据列表.追加

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

  tic=time.clock()

  rp_json=self.get_result(参数)

  toc=time.clock()

  打印(单次处理时长: %.2f %(toc - tic) s )

  img_b64encode=rp_json[image]

  img _ b64 decode=base64。b64解码(img _ b64编码)# base64解码

  #显示检测结果图片

  image=io .字节数(img_b64decode)

  img=Image.open(image)

  img.show()

  #存储检测结果图片

  file=open( E:/刘彻/out/ str(c) .jpg , wb )

  file.write(img_b64decode)

  file.close()

  c=c 1

  if __name__==__main__ :

  recognizer=Traffic _ flow recognizer(API _ key,secret_key)

  recognizer.detect()

  五。意见建议

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

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

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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: