22.【實戰】車輛統計
from asyncio import CancelledError
import cv2
from cv2 import erode
from cv2 import dilate
import numpy as np
# 濾除的最小矩形的範圍
min_w = 90
min_h = 90
# 定義檢測線的高度,與影片大小有關,影片左上角為( 0 , 0 )
line_high = 550
# 線的偏移量
offset = 7
# 統計車的數量
carno = 0
# 存放有效車輛的陣列
cars = []
# 求車的中心點
def center(x,y,w,h):
x1 = int(w/2)
y1 = int(h/2)
cx = x + x1
cy = y + y1
return cx,cy
cap = cv2.VideoCapture('E:\\video.mp4') # 載入影片
bgsubmog = cv2.createBackgroundSubtractorMOG2()
# 形態學 kernel
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
while True:
ret, frame = cap.read()
if (ret == True) :
# 灰度化處理
cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# print(frame.shape) # 獲取影片大小的資訊
# exit() # 該命令之後的所有程式都不執行
# 去噪(高斯)
blur = cv2.GaussianBlur(frame, (7,7),5)
# 去背景
mask = bgsubmog.apply(blur)
# 腐蝕
erode = cv2.erode(mask, kernel)
# 膨脹
dilate = cv2.dilate(erode, kernel, iterations= 2)
# 形態學閉運算,去除影像裡面的噪點
close = cv2.morphologyEx(dilate, cv2.MORPH_CLOSE, kernel)
# 查詢輪廓
cnts, h = cv2.findContours(close, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 繪製一條檢測線
cv2.line(frame, (10,line_high),(1200, line_high),(255,255,0),3)
# 對所有輪廓進行遍歷
for (i, c) in enumerate(cnts):
(x,y,w,h) = cv2.boundingRect(c)
# 對車輛的寬高進行判斷,以驗證是否為有效的車輛
isValid = (w >= min_w) and ( h >= min_h)
if( not isValid):
continue
# 到這裡都是有效的車,繪製車的矩形
cv2.rectangle(frame, (x,y),(x+w,y+h),(0,0,255),2)
# 儲存車的中心點
cpoint = center(x,y,w,h) # 計算車的中心點
cars.append(cpoint) #跟單網gendan5.com 將中心點資料儲存到 cars 這個陣列中
for (x,y) in cars : # 遍歷陣列,如果車的中心點落在檢測線的有效區域內,則計數 +1 ,然後去除該陣列
if ((y > line_high - offset) and (y < line_high + offset)):
carno += 1
cars.remove((x,y))
print(carno)
# 顯示統計資訊
cv2.putText(frame, "Cars Count:" + str(carno),(500,60), cv2.FONT_HERSHEY_SIMPLEX, 2, (255, 0, 0), 5)
cv2.imshow('video', frame)
# cv2.imshow('close', close)
key = cv2.waitKey(1)
if(key == 27) : # esc 鍵
break
cap.release()
cv2.destroyAllWindows()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2906797/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於java的企業車輛管理系統的設計與實現Java
- 車輛違規掉頭車禍識別告警系統
- 車輛鍵盤
- 工地車輛未沖洗識別抓拍系統
- 理想汽車財報:2022年理想汽車總交付汽車133246輛 車輛毛利達19.1%
- 送貨車輛轉向電氣生態系統
- 食品連鎖類門店配送車輛管理系統
- 2020年特斯拉累計交付49.955萬輛電動車
- 市場監管總局:截至2023年年底我國已累計實施汽車召回2842次 涉及車輛達1.03億輛
- DPAC:2004-2020年中國累計召回車輛8010萬輛 全球第二
- 中國自行車協會:中國自行車累計出口超10億輛
- 市場監管總局:2022年中國共實施汽車召回204次 涉及車輛448.8萬輛
- 通用計劃明年推出自動駕駛計程車共享服務,可定製化設計車輛自動駕駛
- 中國汽車流通協會:2022年12月狹義乘用車零售預計220.0萬輛,新能源預計70.0萬輛
- 工程車輛車載PLC遠端監控智慧運營系統解決方案
- Rivian:2022年Q1 Rivian公司生產2553輛汽車 交付1227輛車
- AI開發實踐:關於停車場中車輛識別與跟蹤AI
- AFS:預計2022年全球汽車減產約149.8萬輛
- AFS:預計2021年全球汽車預計將減產超810萬輛
- 22. Generate Parentheses (recursion algorithm)Go
- 22. 正規表示式
- 中國汽車流通協會:2023年2月乘用車零售預測135.0萬輛,新能源預計40.0萬輛
- 車輛資訊快速查詢API:輕鬆查詢車牌號對應車輛的詳細資料API
- Python量化交易系統實戰--計算交易指標Python指標
- 車輛資訊查詢 - 高效快捷地獲取車輛相關資訊的利器
- TrendForce:預計2022年全球新能源汽車將突破1000萬輛
- 預計2021年Q2特斯拉交付新車達20萬輛
- 哪吒汽車:2023年3月份哪吒汽車總計交付10087臺 累計交付破27萬輛
- 乘聯會:2023年10月狹義乘用車零售預計202.0萬輛,新能源預計75.0萬輛
- 乘聯會:2023年9月狹義乘用車零售預計198.0萬輛,新能源預計75.0萬輛
- 乘聯會:2023年4月狹義乘用車零售預計157.0萬輛 新能源預計50.0萬輛
- 乘聯會:2024年7月狹義乘用車零售預計173.0萬輛,新能源預計86.0萬輛
- 乘聯會:2024年5月狹義乘用車零售預計165.0萬輛,新能源預計77.0萬輛
- 乘聯會:2024年6月狹義乘用車零售預計175.0萬輛,新能源預計86.0萬輛
- 乘聯會:2023年3月狹義乘用車零售預計159.0萬輛 新能源預計56.0萬輛
- Redis 實戰篇:巧用Bitmap 實現億級海量資料統計Redis
- TrendForce:2021年第一季全球新能源車共計銷售109萬輛 純電動車銷售量達75萬輛
- PaddlePaddle車牌識別實戰和心得