日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2023/12/10 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python视频车流量计数_【使用攻略】【图像识别】车流量统计(动态版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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视频车流量计数_【使用攻略】【图像识别】车流量统计(动态版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。