Sadržaj:

Analizator prometnih uzoraka pomoću otkrivanja živih objekata: 11 koraka (sa slikama)
Analizator prometnih uzoraka pomoću otkrivanja živih objekata: 11 koraka (sa slikama)

Video: Analizator prometnih uzoraka pomoću otkrivanja živih objekata: 11 koraka (sa slikama)

Video: Analizator prometnih uzoraka pomoću otkrivanja živih objekata: 11 koraka (sa slikama)
Video: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Srpanj
Anonim
Image
Image
Analizator prometnih uzoraka pomoću detekcije živih objekata
Analizator prometnih uzoraka pomoću detekcije živih objekata

U današnjem svijetu semafori su neophodni za sigurnu cestu. Međutim, mnogo puta semafori mogu biti neugodni u situacijama kada se netko približava svjetlu baš kad ono postane crveno. Time se gubi vrijeme, pogotovo ako svjetlo sprječava jedno vozilo da prođe kroz raskrižje kada nema nikoga na cesti. Moja inovacija je pametan semafor koji koristi detekciju objekata uživo s kamere za brojanje broja automobila na svakoj cesti. Hardver koji ću koristiti za ovaj projekt je Raspberry Pi 3, modul kamere i razni elektronički hardver za samo svjetlo. Korištenjem OpenCV -a na Raspberry Pi -u, prikupljeni podaci će se voditi kroz kod koji kontrolira LED diode putem GPIO -a. Ovisno o tim brojkama, semafor će se promijeniti, propuštajući automobile najoptimalnijim redoslijedom. U tom bi se slučaju propustila traka s najviše automobila kako bi traka s manje automobila bila u praznom hodu, čime bi se smanjilo zagađenje zraka. Time bi se uklonile situacije kada se mnogi automobili zaustave dok nema automobila na raskrižju ceste. Ovo ne samo da štedi vrijeme za sve, već i čuva okoliš. Vrijeme koje ljudi zaustavljaju na znaku zaustavljanja s motorom u praznom hodu povećava količinu zagađenja zraka, pa stvaranjem pametnog semafora mogu optimizirati svjetlosne obrasce tako da automobili provode što je moguće manje vremena s zaustavljenim vozilom. U konačnici, ovaj sustav semafora mogao bi se implementirati u gradove, predgrađa ili čak ruralna područja kako bi ljudi bili učinkovitiji, smanjilo bi zagađenje zraka.

Korak 1: Popis dijelova

Materijali:

Raspberry Pi 3 Model B v1.2

Raspberry Pi kamera v2.1

5V/1A mikro USB napajanje

HDMI monitor, tipkovnica, miš SD kartica s Raspbian Jessie

Raspberry Pi GPIO kabel za probijanje

Crvene, žute, zelene LED diode (po 2 u svakoj boji)

Ženski konektori za Raspberry Pi (7 jedinstvenih boja)

Raznolika žica promjera 24 (različite boje) + termoskupljajuća cijev

2’x2’drvena ploča ili platforma

Vijci za drvo

Crna površina (karton, pjenasta ploča, plakatna ploča itd.)

Bijela (ili bilo koja boja osim crne) traka za označavanje na cesti

Crna boja u spreju (za PVC)

½”PVC cijev s koljenastim zglobovima od 90 stupnjeva (2), T utičnicom (1), ženskim adapterom (2)

Alati

Lemilica

3D pisač

Bušite raznim svrdlima

Oglasna ploča

Toplinski pištolj

Korak 2: Postavljanje Raspberry Pi

Umetnite SD karticu u Raspberry Pi i pokrenite sustav.

Slijedite ovaj vodič za instaliranje potrebnih OpenCV knjižnica. Imajte vremena za ovaj korak jer instaliranje biblioteke OpenCV može potrajati nekoliko sati. Ovdje svakako instalirajte i postavite kameru.

Također biste trebali instalirati pip:

pikamera

gpiozero

RPi. GPIO

Evo konačnog koda:

from picamera.array import PiRGBArray

iz picamera uvoz PiCamera

uvoziti pikameru. niz

uvoz numpy kao np

vrijeme uvoza

uvoz cv2

uvezite RPi. GPIO kao GPIO

vrijeme uvoza

Način rada GPIO.set (GPIO. BCM)

za i u (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

sirovo = PiRGBArray (kamera, veličina = (480, 480))

vrijeme.spavanje (0,1)

colorLower = np.para ([0, 100, 100])

colorUpper = np.array ([179, 255, 255])

initvert = 0

inithoriz = 0

brojač = 0

za okvir u cam.capture_continuous (neobrađeno, format = "bgr", use_video_port = True):

okvir = okvir. niz

hsv = cv2.cvtBoja (okvir, cv2. COLOR_BGR2HSV)

mask = cv2.inRange (hsv, colorLower, colorUpper)

mask = cv2.blur (maska, (3, 3))

mask = cv2.dilate (maska, ništa, iteracije = 5)

mask = cv2.erode (maska, ništa, iteracije = 1)

maska = cv2.dilate (maska, ništa, iteracije = 3)

ja, prag = cv2.threshold (maska, 127, 255, cv2. THRESH_BINARY)

cnts = cv2.findContours (thresh, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]

centar = Nema

vert = 0

horiz = 0

ako je len (cnts)> 0:

za c u cntovima:

(x, y), radijus = cv2.minOkružni krug (c)

centar = (int (x), int (y))

radius = int (radijus)

cv2.circle (okvir, središte, radijus, (0, 255, 0), 2)

x = int (x)

y = int (y)

ako je 180 <x <300:

ako je y> 300:

vert = vert +1

elif y <180:

vert = vert +1

drugo:

vert = vert

ako je 180 <y <300:

ako je x> 300:

horiz = horiz +1

elif x <180:

horiz = horiz +1

drugo:

horiz = horiz

ako je vert! = initvert:

ispis "Automobili u okomitoj traci:" + str (vert)

initvert = vert

ispis "Automobili u vodoravnoj traci:" + str (horiz)

inithoriz = horiz

ispis '----------------------------'

ako horiz! = inithoriz:

ispis "Automobili u okomitoj traci:" + str (vert)

initvert = vert

ispis "Automobili u vodoravnoj traci:" + str (horiz)

inithoriz = horiz

ispis '----------------------------'

ako je vert <horiz:

GPIO.izlaz (23, GPIO. HIGH)

GPIO.izlaz (21, GPIO. HIGH)

GPIO.izlaz (16, GPIO. LOW)

GPIO.izlaz (25, GPIO. LOW)

ako je horiz <vert:

GPIO.izlaz (16, GPIO. HIGH)

GPIO.izlaz (25, GPIO. HIGH)

GPIO.izlaz (23, GPIO. LOW)

GPIO.izlaz (21, GPIO. LOW)

cv2.imshow ("Okvir", okvir)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Thresh", thresh)

neobrađeno.skraćeno (0)

ako cv2.waitKey (1) & 0xFF == ord ('q'):

pauza

cv2.destroyAllWindows ()

GPIO.cleanup ()

Korak 3: Raspberry Pi i nosač za kameru

Raspberry Pi i nosač za kameru
Raspberry Pi i nosač za kameru
Raspberry Pi i nosač za kameru
Raspberry Pi i nosač za kameru
Raspberry Pi i nosač za kameru
Raspberry Pi i nosač za kameru
Raspberry Pi i nosač za kameru
Raspberry Pi i nosač za kameru

3D ispišite kućište i kameru, montirajte i sastavite.

Korak 4: Sklapanje semafora

Sklapanje semafora
Sklapanje semafora
Sklapanje semafora
Sklapanje semafora
Sklapanje semafora
Sklapanje semafora

Isprobajte semafor uz ploču. Svaki suprotni skup LED dioda dijeli anodu, a svi dijele zajedničku katodu (uzemljenje). Ukupno bi trebalo biti 7 ulaznih žica: 1 za svaki par LEDS (6) + 1 žica za uzemljenje. Lemite i sastavite semafore.

Korak 5: Ožičenje (1. dio)

Ožičenje (1. dio)
Ožičenje (1. dio)
Ožičenje (1. dio)
Ožičenje (1. dio)
Ožičenje (1. dio)
Ožičenje (1. dio)
Ožičenje (1. dio)
Ožičenje (1. dio)

Lemite igle ženskog zaglavlja na oko 5 stopa žice. Ovo su strane koje će ove žice kasnije provući kroz PVC cijevi. Budite sigurni da možete razlikovati različite setove svjetla (2 x 3 boje i 1 tlo). U ovom slučaju, krajeve drugog niza crvenih, žutih i plavih žica označio sam oštricom kako bih znao koji je koji.

Korak 6: Izgradnja okoliša

Izgradnja okoliša
Izgradnja okoliša
Izgradnja okoliša
Izgradnja okoliša
Izgradnja okoliša
Izgradnja okoliša
Izgradnja okoliša
Izgradnja okoliša

Izgradnja okoliša Napravite ovakvu drvenu paletu od 2 metra kvadratne. Staro drvo je u redu jer će biti prekriveno. Izbušite rupu koja odgovara vašem adapteru. Izbušite vijke kroz stranice palete kako biste pričvrstili PVC cijev na mjesto. Odrežite crnu pjenastu ploču kako bi odgovarala drvenoj paleti ispod. Izbušite rupu koja stane oko PVC cijevi. Ponovite na suprotnom uglu. Označite ceste bijelom trakom.

Korak 7: Dovršavanje PVC okvira

Dovršavanje PVC okvira
Dovršavanje PVC okvira
Dovršavanje PVC okvira
Dovršavanje PVC okvira
Dovršavanje PVC okvira
Dovršavanje PVC okvira

Na gornjoj cijevi izbušite rupu u koju stane snop žica. Gruba rupa je u redu sve dok možete pristupiti unutrašnjosti cijevi. Provucite žice kroz PVC cijevi i zglobove koljena radi testnog uklapanja. Kad se sve dovrši, obojite PVC crnom bojom u spreju kako biste očistili izgled glavnog okvira. Izrežite mali razmak u jednoj od PVC cijevi kako biste uklopili T-spoj. Ovom t-spoju dodajte PVC cijev da bi semafor visio. Promjer bi mogao biti isti kao glavni okvir (1/2 ), no ako koristite tanju cijev, pobrinite se da 7 žica provuče zub. Izbušite rupu kroz ovu cijev da bi semafor visio.

Korak 8: Ožičenje (2. dio)

Ožičenje (2. dio)
Ožičenje (2. dio)
Ožičenje (2. dio)
Ožičenje (2. dio)
Ožičenje (2. dio)
Ožičenje (2. dio)

Ponovo ožičite sve kako je prethodno testirano. Dvaput provjerite semafor i ožičenje s pločicom kako biste potvrdili da su sve veze uspostavljene. Lemi semafor na žice koje prolaze kroz krak T-spoja. Omotajte izložene žice električnom trakom kako biste spriječili kratke hlače i čistiji izgled.

Korak 9: Završeno

Završeno!
Završeno!
Završeno!
Završeno!
Završeno!
Završeno!
Završeno!
Završeno!

Da biste pokrenuli kôd, postavite izvor kao ~/.profile i cd na lokaciju vašeg projekta.

10. korak: Dodaci (fotografije)

Preporučeni: