Sadržaj:

Analizator prometnih obrazaca pomoću detekcije živih objekata: 11 koraka (sa slikama)
Analizator prometnih obrazaca pomoću detekcije živih objekata: 11 koraka (sa slikama)

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

Video: Analizator prometnih obrazaca pomoću detekcije živih objekata: 11 koraka (sa slikama)
Video: Kako voditi paušalni obrt: administracija i knjigovodstvo I Pokreni biznis 2024, Juli
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 neko približava svjetlu baš kad ono postane crveno. Ovo gubi vrijeme, pogotovo ako svjetlo sprečava jedno vozilo da prođe kroz raskrsnicu kada nema nikoga na putu. 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 različiti elektronički hardver za samo svjetlo. Koristeći OpenCV na Raspberry Pi -u, prikupljene informacije će se voditi kroz kod koji kontrolira LED diode putem GPIO -a. Ovisno o tim brojevima, semafor će se promijeniti, propuštajući automobile najoptimalnijim redoslijedom. U tom slučaju bi se pustila 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 raskrsnici. Ovo ne samo da štedi vrijeme za sve, već i čuva okoliš. Vrijeme koje ljudi zaustavljaju na znaku zaustavljanja sa praznim motorom 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 sa zaustavljenim vozilom. Na kraju, ovaj sistem semafora mogao bi se primijeniti u gradovima, predgrađima ili čak ruralnim područjima kako bi ljudi bili efikasniji, smanjilo bi zagađenje zraka.

Korak 1: Lista dijelova

Materijali:

Raspberry Pi 3 Model B v1.2

Raspberry Pi kamera v2.1

5V/1A mikro USB napajanje

HDMI monitor, tastatura, miš SD kartica sa Raspbian Jessie

Raspberry Pi GPIO kabl za probijanje

Crvene, žute, zelene LED diode (po 2 boje)

Ž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 sa lakatnim spojevima od 90 stepeni (2), T utičnica (1), ženski adapter (2)

Alati

Lemilica

3D štampač

Bušite raznim burgijama

Breadboard

Toplinski pištolj

Korak 2: Postavljanje Raspberry Pi

Umetnite SD karticu u Raspberry Pi i pokrenite sistem.

Slijedite ovaj vodič za instaliranje potrebnih OpenCV biblioteka. Imajte vremena za ovaj korak jer instaliranje biblioteke OpenCV može potrajati nekoliko sati. Ovdje također instalirajte i postavite kameru.

Takođe biste trebali instalirati pip:

picamera

gpiozero

RPi. GPIO

Evo konačnog koda:

from picamera.array import PiRGBArray

iz pikamera iz uvoza PiCamera

import picamera.array

uvoz numpy kao np

vreme uvoza

import cv2

uvezite RPi. GPIO kao GPIO

vreme uvoza

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

za i in (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))

time.sleep (0,1)

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

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

initvert = 0

inithoriz = 0

brojač = 0

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

frame = frame.array

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

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

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

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

maska = 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))

radijus = int (radijus)

cv2.circle (okvir, centar, 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

if vert! = initvert:

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

initvert = vert

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

inithoriz = horiz

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

if 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 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 (0)

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

break

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 pomoću ploče. Svaki suprotni set LED dioda dijeli anodu, a svi oni 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 na kojima će ove žice kasnije provući PVC cijevi. Budite sigurni da možete razlikovati različite setove svjetla (2 x 3 boje i 1 osnovno). 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 drvenu paletu od 2 metra kvadratne poput ove. Staro drvo je u redu jer će biti pokriveno. 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 mogao visjeti. Promjer bi mogao biti isti kao glavni okvir (1/2 ), iako ako koristite tanju cijev, pobrinite se da 7 žica prođe kroz njih. 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 pomoću matične ploče 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 nastanak kratkih hlača i čistiji izgled.

Korak 9: Završeno

Gotovo!
Gotovo!
Gotovo!
Gotovo!
Gotovo!
Gotovo!
Gotovo!
Gotovo!

Za pokretanje koda, postavite izvor kao ~/.profile i cd na lokaciju vašeg projekta.

Korak 10: Dodaci (fotografije)

Preporučuje se: