0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何用Python識別停車位?

電子工程師 ? 來源:lq ? 2019-01-29 10:30 ? 次閱讀

【導語】今天這篇文章的選題非常貼近生活。營長生活在北京,深知開車出門最怕的就是堵車和找不到停車位。記得冬至那個周末,幾個小伙伴滑雪回來找了一家餃子館吃餃子,結(jié)果七拐八拐,好不容易才找到一個停車位??吹竭@篇技術文章,馬上就想要學習一下,分享給大家,希望有助于解決大家這個痛點問題,春節(jié)出行沒準就可以用得上了。

作者通過相機結(jié)合深度學習算法,基于 Python 語言建立一個高精度的停車位的通知系統(tǒng),每當有新停車位時就會發(fā)短信提醒我。聽起來好像很復雜,真的方便實用嗎?但實際上所使用的工具都是現(xiàn)成的,只要將這些工具進行有機的組合,就可以快速、簡便的實現(xiàn)。

下面我們就開始學習整個工程流程:

分解問題

解決一個復雜的問題,首先第一步是要把問題分解成幾個簡單子任務。然后,針對每個子任務,運用機器學習中不同的方法來分別解決每個問題。最后把這些子任務貫穿起來,形成整套解決方案。

下面是檢測開放停車位的流程圖:

輸入:普通攝像頭采集的視頻

有了輸入數(shù)據(jù)后,接下來我們需要知道圖像的哪一部分是停車位,而且停車位是沒有人使用的。

第一步:檢測視頻幀中所有可能的停車位。

第二步:檢測每一幀視頻中的所有車輛??梢愿櫭枯v車從一幀到另一幀的運動。

第三步:確定目前有哪些停車位被占用,哪些沒有被占用。這需要結(jié)合第一步和第二步的結(jié)果。

最后一步:當停車位變成可用時,系統(tǒng)發(fā)出通知。

其實可以使用多種不同的方法來完成這些步驟。不同的方法將具有不同的優(yōu)勢和缺點。接下來具體來看:

一、探測停車位

相機視圖如下圖所示:

需要掃描圖像,并得到有效停車區(qū)域,如下面黃色標識出來的位置:

一個懶辦法是程序?qū)懰烂總€停車場的位置,而不是自動檢測停車場。但是如果移動攝像機,探測不同街道上的停車位,就必須再次手動定位停車位置。這樣看來這個方法一點都不好,還是要采用自動檢測停車位的方法。

其中一個想法是識別停車計時器并假設每個計時器旁邊都有一個停車位:

但是這種方法也有一些問題。首先,并不是每個停車位有一個停車計時器,而且我們最想先找到免費停車位。第二,知道停車計時器的位置還不能告訴我們確切的停車位置點。

另一個想法是搭建一個目標檢測模型,找到在馬路上畫的停車位記號,就像下圖標識出來的:

這種方法也有兩個難點。首先,從遠處看,停車位線的標志很小,很難看到,增加了識別難度;其次,道路上還有各種交通標記線,比如車道線、人行道斑馬線,這也給識別增加了難度。

或許還可以換個思維方式,回避一些技術挑戰(zhàn)。重新思考停車位到底是什么呢?無非是一個車需要停放一定時間的位置。所以我們可能根本不需要檢測停車位,只要檢測出長時間不動的車,并假設它們的位置就是停車位。

所以,如果我們能檢測出汽車,并找出哪些車在視頻幀之間沒有移動,就可以推斷停車位的位置。

二、在圖像中檢測汽車

在視頻中檢測車輛是一個經(jīng)典的目標檢測問題。有很多機器學習方法可以實現(xiàn)。下面列出了一些最常見的目標檢測算法:

1、通過 HOG(梯度方向直方圖)目標檢測器檢測出所有的車。這種非深度學習方法運行起來相對較快,但它無法處理汽車在不同方向上的旋轉(zhuǎn)問題。

2、通過 CNN(卷積神經(jīng)網(wǎng)絡)目標檢測器檢測所有的車。這種方法是準確的,但是效率比較低,因為同一張圖像必須掃描多次,以檢測到所有的汽車。雖然它可以很容易地對不同旋轉(zhuǎn)方向的汽車定向,但是比 HOG 方法需要更多的訓練數(shù)據(jù)。

3、使用新的深度學習方法,如 Mask R-CNN,F(xiàn)aster R-CNN 或者 YOLO 算法,兼容準確性和運行效率,大大加快了檢測過程。一旦有大量的訓練數(shù)據(jù),在 GPU 上運行也很快。

通常來說,我們希望選擇最簡單可行的算法和最少的訓練數(shù)據(jù),而不是一定要用那些流行的新的算法?;谀壳斑@種特殊場景下,Mask R- CNN 是一個不錯的選擇。

Mask R-CNN 架構就是在整個圖像中檢測對象,不使用滑動窗口的方式,所以運行速度很快。有了 GPU 處理器,我們能夠每秒處理多幀的高分辨率視頻,從中檢測到車輛。

Mask R-CNN 為我們提供了很多檢測到的信息。大多數(shù)目標檢測算法只返回每個對象的邊框。但是 Mask R-CNN 不僅會給我們每個對象的位置,也會給出一個對象的輪廓,像這樣:

為了訓練 Mask R-CNN 模型,我們需要很多這類檢測物體的圖片??梢曰◣滋斓臅r間出去拍攝照片,不過已經(jīng)存在一些汽車圖像的公共數(shù)據(jù)集。有一個很流行的數(shù)據(jù)集叫做COCO(Common Objects In Context的縮寫),它里面已經(jīng)有超過 12000 張汽車的圖片。下面就是一個 COCO 數(shù)據(jù)集中的圖像:

這些數(shù)據(jù)可以很好的訓練 Mask R-CNN 模型,而且已經(jīng)有很多人使用過 COCO數(shù)據(jù)集,并分享了訓練的結(jié)果。所以我們可以直接使用一些訓練好的模型,在本項目中使用 Matterport的開源模型。

不僅能識別車輛,還能識別到交通燈和人。有趣的是,它把其中一棵樹識別成“potted plant”。對于圖像中檢測到的每個對象,我們從 MaskR-CNN 模型得出以下 4 點:

(1)不同對象的類別,COCO 模型可以識別出 80 種不同的物體,比如小轎車和卡車。

(2)目標識別的置信度,數(shù)字越大,說明模型識別對象的精準度越高。

(3)圖像中物體的邊界框,給定了 X/Y 像素的位置。

(4)位圖“mask”說明了邊框內(nèi)哪些像素是對象的一部分,哪些不是。使用“mask”數(shù)據(jù),我們也可以算出物體的輪廓。

下面是 Python 代碼,使用 Matterport 的 Mask R-CNN 的訓練模型和 OpenCV 來檢測汽車邊框:

1importos 2importnumpyasnp 3importcv2 4importmrcnn.config 5importmrcnn.utils 6frommrcnn.modelimportMaskRCNN 7frompathlibimportPath 8 9 10#ConfigurationthatwillbeusedbytheMask-RCNNlibrary 11classMaskRCNNConfig(mrcnn.config.Config): 12NAME="coco_pretrained_model_config" 13IMAGES_PER_GPU=1 14GPU_COUNT=1 15NUM_CLASSES=1+80#COCOdatasethas80classes+onebackgroundclass 16DETECTION_MIN_CONFIDENCE=0.6 17 18 19#FilteralistofMaskR-CNNdetectionresultstogetonlythedetectedcars/trucks 20defget_car_boxes(boxes,class_ids): 21car_boxes=[] 22 23fori,boxinenumerate(boxes): 24#Ifthedetectedobjectisn'tacar/truck,skipit 25ifclass_ids[i]in[3,8,6]: 26car_boxes.append(box) 27 28returnnp.array(car_boxes) 29 30 31#Rootdirectoryoftheproject 32ROOT_DIR=Path(".") 33 34#Directorytosavelogsandtrainedmodel 35MODEL_DIR=os.path.join(ROOT_DIR,"logs") 36 37#Localpathtotrainedweightsfile 38COCO_MODEL_PATH=os.path.join(ROOT_DIR,"mask_rcnn_coco.h5") 39 40#DownloadCOCOtrainedweightsfromReleasesifneeded 41ifnotos.path.exists(COCO_MODEL_PATH): 42mrcnn.utils.download_trained_weights(COCO_MODEL_PATH) 43 44#Directoryofimagestorundetectionon 45IMAGE_DIR=os.path.join(ROOT_DIR,"images") 46 47#Videofileorcameratoprocess-setthisto0touseyour***insteadofavideofile 48VIDEO_SOURCE="test_images/parking.mp4" 49 50#CreateaMask-RCNNmodelininferencemode 51model=MaskRCNN(mode="inference",model_dir=MODEL_DIR,config=MaskRCNNConfig()) 52 53#Loadpre-trainedmodel 54model.load_weights(COCO_MODEL_PATH,by_name=True) 55 56#Locationofparkingspaces 57parked_car_boxes=None 58 59#Loadthevideofilewewanttorundetectionon 60video_capture=cv2.VideoCapture(VIDEO_SOURCE) 61 62#Loopovereachframeofvideo 63whilevideo_capture.isOpened(): 64success,frame=video_capture.read() 65ifnotsuccess: 66break 67 68#ConverttheimagefromBGRcolor(whichOpenCVuses)toRGBcolor 69rgb_image=frame[:,:,::-1] 70 71#RuntheimagethroughtheMaskR-CNNmodeltogetresults. 72results=model.detect([rgb_image],verbose=0) 73 74#MaskR-CNNassumeswearerunningdetectiononmultipleimages. 75#Weonlypassedinoneimagetodetect,soonlygrabthefirstresult. 76r=results[0] 77 78#Thervariablewillnowhavetheresultsofdetection: 79#-r['rois']aretheboundingboxofeachdetectedobject 80#-r['class_ids']aretheclassid(type)ofeachdetectedobject 81#-r['scores']aretheconfidencescoresforeachdetection 82#-r['masks']aretheobjectmasksforeachdetectedobject(whichgivesyoutheobjectoutline) 83 84#Filtertheresultstoonlygrabthecar/truckboundingboxes 85car_boxes=get_car_boxes(r['rois'],r['class_ids']) 86 87print("Carsfoundinframeofvideo:") 88 89#Draweachboxontheframe 90forboxincar_boxes: 91print("Car:",box) 92 93y1,x1,y2,x2=box 94 95#Drawthebox 96cv2.rectangle(frame,(x1,y1),(x2,y2),(0,255,0),1) 97 98#Showtheframeofvideoonthescreen 99cv2.imshow('Video',frame)100101#Hit'q'toquit102ifcv2.waitKey(1)&0xFF==ord('q'):103break104105#Cleanupeverythingwhenfinished106video_capture.release()107cv2.destroyAllWindows()

運行該腳本后,將會看到在圖像中識別到的汽車和邊框:

同時會得到檢測的每輛車的像素坐標:

這樣我們已經(jīng)成功地在圖像中檢測到了汽車。接下來到了下一個步驟。

三、探測空車位

知道圖像中每輛車的像素位置后,通過觀察連續(xù)多幀視頻,可以很容易地算出哪幀里汽車沒有移動。但我們?nèi)绾螜z測到汽車何時離開停車位?經(jīng)觀察,圖像中汽車的邊框部分有所重疊:

如果假設每個邊界框代表一個停車場空間,這個區(qū)域即使有車開走了,但是仍可能被另外汽車部分占據(jù)。因此我們需要一種方法來測量重疊,檢查出“大部分為空”的框。我們使用的度量方法稱為 Intersection Over Union(IoU)。通過計算兩個物體重疊的像素量,然后除以兩個物體所覆蓋的像素:

有了這個值,接下來就可以很容易確定一輛車是否在停車位。如果 IoU 測量值低,比如 0.15,表示汽車并沒有占據(jù)大部分的停車位空間。但是如果測量值很高,比如 0.6,就表示汽車占據(jù)了大部分的停車位,因此可以確定停車位已被占用。

IoU 是計算機視覺中常用的一種測量方法,提供了現(xiàn)成的代碼。Matterport 的Mask R-CNN 庫可以直接調(diào)用這個函數(shù) mrcnn.utils.compute_overlaps()。假設我們有一個表示停車位邊界框的列表,要檢識別到的車輛是否在這些邊界內(nèi)框很簡單,只需添加一兩行代碼:

1#Filtertheresultstoonlygrabthecar/truckboundingboxes2car_boxes=get_car_boxes(r['rois'],r['class_ids'])34#Seehowmuchcarsoverlapwiththeknownparkingspaces5overlaps=mrcnn.utils.compute_overlaps(car_boxes,parking_areas)67print(overlaps)

結(jié)果顯示為:

在二維數(shù)組中,每一行表示一個停車位邊界框。同樣的,每一列表示停車場被汽車所覆蓋的程度。1.0 分意味著汽車完全占據(jù)了,而 0.02 這樣的低分數(shù),意味著有重疊區(qū)域,但不會占據(jù)大部分空間。

要找到無人使用的停車位,只需要計算出這個數(shù)組。如果所有的數(shù)都是 0 或者很小,也就表示空間沒有被占用,因此一定是空停車位。

盡管 Mask R-CNN 非常精確,但目標檢測并不能做到完美。有時也會在一段視頻中漏掉一兩輛車。所以在定位到一個空車位時,還應該檢測在一段時間內(nèi)都是空的,比如 5或10幀連續(xù)視頻。這也可以避免視頻本身出現(xiàn)故障而造成誤檢。一旦看到幾個連續(xù)視頻中都有空車位,馬上發(fā)送提醒通知!

四、發(fā)送消息

最后一步是發(fā)送 SMS 提醒消息。利用 Twilio 通過 Python 發(fā)送 SMS 消息非常簡單,基本上幾行代碼就可以實現(xiàn)。當然,Twilio 只是這個項目中用到的方法,你也可以用其他方式實現(xiàn)。

要使用 Twilio,先要注冊一個試用帳戶,創(chuàng)建一個 Twilio 電話號碼并獲取您的帳戶憑證。然后,您需要安裝 Twilio Python 客戶端庫:

下面是發(fā)送 SMS 消息的 Python 代碼(需用自己的帳戶信息替換這些值):

1fromtwilio.restimportClient 2 3#Twilioaccountdetails 4twilio_account_sid='YourTwilioSIDhere' 5twilio_auth_token='YourTwilioAuthTokenhere' 6twilio_source_phone_number='YourTwiliophonenumberhere' 7 8#CreateaTwilioclientobjectinstance 9client=Client(twilio_account_sid,twilio_auth_token)1011#SendanSMS12message=client.messages.create(13body="ThisismySMSmessage!",14from_=twilio_source_phone_number,15to="Destinationphonenumberhere"16)

在添加 SMS 發(fā)送功能時要注意,不要連續(xù)發(fā)送已經(jīng)識別過的空車位信息。可以用一個 flag 來跟蹤已經(jīng)發(fā)過的短信,除非是設定一段時間后再次提醒或是檢測到新的空車位。

五、把所有流程串在一起

現(xiàn)在將每個步驟集成一個Python腳本。下面是完整代碼,要運行這段代碼,需要安裝Python 3.6+,Matterport的 Mask R-CNN 和 OpenCV:

1importos 2importnumpyasnp 3importcv2 4importmrcnn.config 5importmrcnn.utils 6frommrcnn.modelimportMaskRCNN 7frompathlibimportPath 8fromtwilio.restimportClient 9 10 11#ConfigurationthatwillbeusedbytheMask-RCNNlibrary 12classMaskRCNNConfig(mrcnn.config.Config): 13NAME="coco_pretrained_model_config" 14IMAGES_PER_GPU=1 15GPU_COUNT=1 16NUM_CLASSES=1+80#COCOdatasethas80classes+onebackgroundclass 17DETECTION_MIN_CONFIDENCE=0.6 18 19 20#FilteralistofMaskR-CNNdetectionresultstogetonlythedetectedcars/trucks 21defget_car_boxes(boxes,class_ids): 22car_boxes=[] 23 24fori,boxinenumerate(boxes): 25#Ifthedetectedobjectisn'tacar/truck,skipit 26ifclass_ids[i]in[3,8,6]: 27car_boxes.append(box) 28 29returnnp.array(car_boxes) 30 31 32#Twilioconfig 33twilio_account_sid='YOUR_TWILIO_SID' 34twilio_auth_token='YOUR_TWILIO_AUTH_TOKEN' 35twilio_phone_number='YOUR_TWILIO_SOURCE_PHONE_NUMBER' 36destination_phone_number='THE_PHONE_NUMBER_TO_TEXT' 37client=Client(twilio_account_sid,twilio_auth_token) 38 39 40#Rootdirectoryoftheproject 41ROOT_DIR=Path(".") 42 43#Directorytosavelogsandtrainedmodel 44MODEL_DIR=os.path.join(ROOT_DIR,"logs") 45 46#Localpathtotrainedweightsfile 47COCO_MODEL_PATH=os.path.join(ROOT_DIR,"mask_rcnn_coco.h5") 48 49#DownloadCOCOtrainedweightsfromReleasesifneeded 50ifnotos.path.exists(COCO_MODEL_PATH): 51mrcnn.utils.download_trained_weights(COCO_MODEL_PATH) 52 53#Directoryofimagestorundetectionon 54IMAGE_DIR=os.path.join(ROOT_DIR,"images") 55 56#Videofileorcameratoprocess-setthisto0touseyour***insteadofavideofile 57VIDEO_SOURCE="test_images/parking.mp4" 58 59#CreateaMask-RCNNmodelininferencemode 60model=MaskRCNN(mode="inference",model_dir=MODEL_DIR,config=MaskRCNNConfig()) 61 62#Loadpre-trainedmodel 63model.load_weights(COCO_MODEL_PATH,by_name=True) 64 65#Locationofparkingspaces 66parked_car_boxes=None 67 68#Loadthevideofilewewanttorundetectionon 69video_capture=cv2.VideoCapture(VIDEO_SOURCE) 70 71#Howmanyframesofvideowe'veseeninarowwithaparkingspaceopen 72free_space_frames=0 73 74#HavewesentanSMSalertyet? 75sms_sent=False 76 77#Loopovereachframeofvideo 78whilevideo_capture.isOpened(): 79success,frame=video_capture.read() 80ifnotsuccess: 81break 82 83#ConverttheimagefromBGRcolor(whichOpenCVuses)toRGBcolor 84rgb_image=frame[:,:,::-1] 85 86#RuntheimagethroughtheMaskR-CNNmodeltogetresults. 87results=model.detect([rgb_image],verbose=0) 88 89#MaskR-CNNassumeswearerunningdetectiononmultipleimages. 90#Weonlypassedinoneimagetodetect,soonlygrabthefirstresult. 91r=results[0] 92 93#Thervariablewillnowhavetheresultsofdetection: 94#-r['rois']aretheboundingboxofeachdetectedobject 95#-r['class_ids']aretheclassid(type)ofeachdetectedobject 96#-r['scores']aretheconfidencescoresforeachdetection 97#-r['masks']aretheobjectmasksforeachdetectedobject(whichgivesyoutheobjectoutline) 98 99ifparked_car_boxesisNone:100#Thisisthefirstframeofvideo-assumeallthecarsdetectedareinparkingspaces.101#Savethelocationofeachcarasaparkingspaceboxandgotothenextframeofvideo.102parked_car_boxes=get_car_boxes(r['rois'],r['class_ids'])103else:104#Wealreadyknowwheretheparkingspacesare.Checkifanyarecurrentlyunoccupied.105106#Getwherecarsarecurrentlylocatedintheframe107car_boxes=get_car_boxes(r['rois'],r['class_ids'])108109#Seehowmuchthosecarsoverlapwiththeknownparkingspaces110overlaps=mrcnn.utils.compute_overlaps(parked_car_boxes,car_boxes)111112#Assumenospacesarefreeuntilwefindonethatisfree113free_space=False114115#Loopthrougheachknownparkingspacebox116forparking_area,overlap_areasinzip(parked_car_boxes,overlaps):117118#Forthisparkingspace,findthemaxamountitwascoveredbyany119#carthatwasdetectedinourimage(doesn'treallymatterwhichcar)120max_IoU_overlap=np.max(overlap_areas)121122#Getthetop-leftandbottom-rightcoordinatesoftheparkingarea123y1,x1,y2,x2=parking_area124125#Checkiftheparkingspaceisoccupiedbyseeingifanycaroverlaps126#itbymorethan0.15usingIoU127ifmax_IoU_overlap10:151#WriteSPACEAVAILABLE!!atthetopofthescreen152font=cv2.FONT_HERSHEY_DUPLEX153cv2.putText(frame,f"SPACEAVAILABLE!",(10,150),font,3.0,(0,255,0),2,cv2.FILLED)154155#Ifwehaven'tsentanSMSyet,sentit!156ifnotsms_sent:157print("SENDINGSMS!!!")158message=client.messages.create(159body="Parkingspaceopen-gogogo!",160from_=twilio_phone_number,161to=destination_phone_number162)163sms_sent=True164165#Showtheframeofvideoonthescreen166cv2.imshow('Video',frame)167168#Hit'q'toquit169ifcv2.waitKey(1)&0xFF==ord('q'):170break171172#Cleanupeverythingwhenfinished173video_capture.release()174cv2.destroyAllWindows()

這段代碼寫的比較簡潔,實現(xiàn)了基本的功能。大家也可以試著修改代碼以適應不同的場景。僅僅更改一下模型參數(shù),出現(xiàn)的效果就可能完全不同,在不同應用中盡情發(fā)揮想象力!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8420

    瀏覽量

    132685
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84727
  • 深度學習
    +關注

    關注

    73

    文章

    5503

    瀏覽量

    121206

原文標題:春節(jié)停車難?用Python找空車位

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    想實現(xiàn)停車位的聯(lián)網(wǎng)監(jiān)控,路邊停車亂象如何破?

    近年來,隨著路邊停車位使用率的上升,路邊停車糾紛不斷:就停路邊打了個電話也要收費;交了停車費怎么又被交警貼了違章停車罰單;收費員不按規(guī)則亂計費;車主拒交
    的頭像 發(fā)表于 08-31 10:56 ?2.5w次閱讀

    停車位管理系統(tǒng)帶程序及仿真

    停車位管理系統(tǒng)帶程序及仿真
    發(fā)表于 06-02 02:16

    5天建造完成的立體停車位

    `5天建造完成的立體停車位,2臺車位的面積,可停放15臺車`
    發(fā)表于 10-19 14:39

    請問如何用labview來實現(xiàn)一個街道停車位

    本帖最后由 一只耳朵怪 于 2018-6-12 11:38 編輯 怎么用labview來實現(xiàn)一個街道停車位!
    發(fā)表于 06-11 15:41

    FRAM助力你快速找到停車位

    厭倦了在街區(qū)或停車場兜了五個圈,只為找一個空的停車位? 您是否知道電磁傳感器可能是消除您困擾的方法之一? 這些傳感器可置于地上或路面下,用于檢測車輛在停車位的時間。 借助這些傳感器形成的系統(tǒng),您可以獲得空
    發(fā)表于 09-10 11:47

    毫米波雷達感應模組,智慧停車位探測技術方案,提升停車空位利用率

    ,給居民出行帶來了極大的阻礙。相關數(shù)據(jù)顯示,我國新建停車位發(fā)展緩慢,停車位缺口越來越大;停車位利用率極低,一個車位的全天利用率平均值在30%左右,與國際先進水平80%相差甚遠。在這樣的
    發(fā)表于 10-14 17:01

    怎樣快速實現(xiàn)基于物聯(lián)網(wǎng)技術的共享停車位聯(lián)網(wǎng)方案?

    怎樣快速實現(xiàn)基于物聯(lián)網(wǎng)技術的共享停車位聯(lián)網(wǎng)方案?
    發(fā)表于 01-18 07:33

    停車傳感器是什么?智能停車場如何實現(xiàn)

    ,管理員可以通過它來監(jiān)視和監(jiān)控停車場,從而確保正確的停車管理?! ≈悄?b class='flag-5'>停車傳感器主要用于識別汽車的占用情況。這種接近設備通常用于簡單地驗證特定停車位
    發(fā)表于 11-15 17:52

    共享停車位項目商業(yè)計劃書

    共享停車位項目商業(yè)計劃書
    發(fā)表于 12-12 15:05 ?0次下載

    基于MK60和TSL1401的汽車停車位停車報警裝置的設計

    基于停車位的汽車停車報警系統(tǒng)是針對目前市場上被忽略的依據(jù)停車線為駕駛員設計的一款報警裝置。該系統(tǒng)采用低成本的單片機、CCD傳感器、超聲波測距模塊實現(xiàn)聲光報警,具有方便調(diào)試,安裝簡單的特點。隨著
    發(fā)表于 04-25 20:09 ?1733次閱讀
    基于MK60和TSL1401的汽車<b class='flag-5'>停車位</b><b class='flag-5'>停車</b>報警裝置的設計

    特斯拉部分快充站的停車位安裝智能地鎖

    據(jù)外媒報道,中國特斯拉部分快充站的停車位在近日安裝了智能地鎖,通過這套設備可以避免燃油車占用充電車位的現(xiàn)象。
    的頭像 發(fā)表于 01-27 10:14 ?8945次閱讀

    2019智慧共享停車位APP解決方案開發(fā)市場如何?看完這4點你就明白了

    城市車輛的不斷增多,讓停車難、停車貴成為了有車一族最困擾的事。而智慧共享停車位APP解決方案開發(fā)是一款能給人們提供錯時停車的APP軟件。從本質(zhì)上看,它確實能解決目前市面上存在的車多位少
    發(fā)表于 03-29 17:06 ?563次閱讀

    停車位管理系統(tǒng)方案可以解決什么問題

    停車位管理系統(tǒng)是通過計算機、網(wǎng)絡設備、車輛感知傳輸設備、客戶終端設備等搭建的一套對停車場車輛出入、場內(nèi)車流引導、車位狀態(tài)信息發(fā)布、收取停車費進行管理的綜合管理平臺。
    發(fā)表于 06-24 11:39 ?2017次閱讀

    創(chuàng)新的綠色停車位,為人們停車提供了極大便利

    近日,不少細心的市民注意到,杭州拱墅區(qū)葉青兜路邊出現(xiàn)了一條綠色停車位,并噴有限時20分鐘標志。這些綠色車位主要分布在早餐店、便利店、藥店、公共廁所等附近。 設立這樣的綠色限時停車位,是杭州交警部門
    發(fā)表于 07-14 13:41 ?1228次閱讀

    停車位檢測新數(shù)據(jù)集、新方法,精準又快速(含視頻解讀)

    本文是一篇關于停車位檢測的文章,文章的視頻有詳細解讀,文章的創(chuàng)新點就是在圓形描述器來回歸定點坐標。地址:[鏈接]。希望各位看官們...
    發(fā)表于 01-26 19:25 ?1次下載
    <b class='flag-5'>停車位</b>檢測新數(shù)據(jù)集、新方法,精準又快速(含視頻解讀)