Cuprins:

Analizator de modele de trafic folosind detectarea obiectelor live: 11 pași (cu imagini)
Analizator de modele de trafic folosind detectarea obiectelor live: 11 pași (cu imagini)

Video: Analizator de modele de trafic folosind detectarea obiectelor live: 11 pași (cu imagini)

Video: Analizator de modele de trafic folosind detectarea obiectelor live: 11 pași (cu imagini)
Video: AMENINȚĂRI EMERGENȚE - Audierile Senatului SUA privind AARO / OZN-uri / UAP 2024, Noiembrie
Anonim
Image
Image
Analizator de modele de trafic folosind detectarea obiectelor live
Analizator de modele de trafic folosind detectarea obiectelor live

În lumea actuală, semafoarele sunt esențiale pentru un drum sigur. Cu toate acestea, de multe ori, semafoarele pot fi enervante în situații în care cineva se apropie de lumină la fel cum devine roșu. Acest lucru pierde timpul, mai ales dacă lumina împiedică un singur vehicul să treacă prin intersecție atunci când nu este nimeni altcineva pe drum. Inovația mea este un semafor inteligent care folosește detectarea obiectelor live de la o cameră pentru a număra numărul de mașini pe fiecare drum. Hardware-ul pe care îl voi folosi pentru acest proiect este un Raspberry Pi 3, un modul de cameră și diverse hardware-uri electronice pentru lumina în sine. Folosind OpenCV pe Raspberry Pi, informațiile colectate vor fi rulate prin cod care controlează LED-urile prin GPIO. În funcție de aceste numere, semaforul se va schimba, lăsând mașinile să treacă în cea mai optimă ordine. În acest caz, banda cu cele mai multe mașini ar fi lăsată să treacă, astfel încât banda cu mai puține mașini să fie la ralanti, reducând poluarea aerului. Acest lucru ar elimina situațiile în care multe mașini sunt oprite în timp ce nu există mașini pe drumul care se intersectează. Acest lucru nu numai că economisește timp pentru toată lumea, dar salvează și mediul. Cantitatea de timp în care oamenii sunt opriți la un indicator de oprire cu motorul la ralanti crește cantitatea de poluare a aerului, astfel încât, creând un semafor inteligent, sunt în măsură să optimizez modelele de lumină, astfel încât mașinile să petreacă cel mai puțin timp posibil cu vehiculul oprit. În cele din urmă, acest sistem de semafor ar putea fi implementat în orașe, suburbii sau chiar în zonele rurale, pentru a fi mai eficient pentru oameni, ar reduce poluarea aerului.

Pasul 1: Lista pieselor

Materiale:

Raspberry Pi 3 Model B v1.2

Camera Raspberry Pi v2.1

Alimentare micro USB 5V / 1A

Monitor HDMI, tastatură, mouse card SD cu Raspbian Jessie

Cablu Raspberry Pi GPIO

LED-uri roșii, galbene, verzi (2 din fiecare culoare)

Conectori feminini pentru Raspberry Pi (7 culori unice)

Sârmă asortată de calibru 24 (culori diferite) + tub termocontractabil

Panou sau platformă din lemn de 2’x2’

Șuruburi pentru lemn

Suprafață neagră (carton, placă de spumă, afișă etc.)

Bandă albă (sau orice altă culoare decât cea neagră) pentru marcaje rutiere

Vopsea neagra spray (pentru PVC)

½”țeavă din PVC cu articulații cot de 90 de grade (2), mufă T (1), adaptor mamă (2)

Instrumente

Ciocan de lipit

imprimantă 3d

Burghiu cu diverse burghie

Pană de pâine

Pistol cu aer cald

Pasul 2: Configurarea Raspberry Pi

Încărcați cardul SD în Raspberry Pi și porniți-l.

Urmați acest ghid pentru a instala bibliotecile OpenCV necesare. Asigurați-vă că aveți timp pentru a face acest pas, deoarece instalarea bibliotecii OpenCV poate dura câteva ore. Asigurați-vă că instalați și configurați camera dvs. aici.

De asemenea, ar trebui să instalați pip:

picamera

gpiozero

RPi. GPIO

Iată codul finalizat:

din picamera.array import PiRGBArray

din picamera import PiCamera

import picamera.array

import numpy ca np

timpul de import

import cv2

importați RPi. GPIO ca GPIO

timpul de import

GPIO.setmode (GPIO. BCM)

pentru i în (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

raw = PiRGBArray (camă, dimensiune = (480, 480))

time.sleep (0.1)

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

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

initvert = 0

inithoriz = 0

contor = 0

pentru cadru în cam.capture_continuous (raw, format = "bgr", use_video_port = True):

cadru = cadru.array

hsv = cv2.cvtColor (cadru, cv2. COLOR_BGR2HSV)

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

mască = cv2.blur (mască, (3, 3))

mask = cv2.dilate (mască, None, iterații = 5)

mask = cv2.erode (mască, None, iterații = 1)

mask = cv2.dilate (mască, None, iterații = 3)

eu, treier = cv2.threshold (mască, 127, 255, cv2. THRESH_BINARY)

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

centru = Nici unul

vert = 0

horiz = 0

dacă len (cnts)> 0:

pentru c în cnts:

(x, y), raza = cv2.minCercul de închidere (c)

centru = (int (x), int (y))

raza = int (raza)

cv2.circle (cadru, centru, rază, (0, 255, 0), 2)

x = int (x)

y = int (y)

dacă 180 <x <300:

dacă y> 300:

vert = vert +1

elif y <180:

vert = vert +1

altceva:

vert = vert

dacă 180 <y <300:

dacă x> 300:

horiz = horiz +1

elif x <180:

horiz = horiz +1

altceva:

horiz = horiz

dacă vert! = initvert:

print "Mașini pe bandă verticală:" + str (vert)

initvert = vert

print "Mașini pe bandă orizontală:" + str (horiz)

inithoriz = horiz

imprimare '----------------------------'

if horiz! = inithoriz:

print "Mașini pe bandă verticală:" + str (vert)

initvert = vert

print "Mașini pe bandă orizontală:" + str (horiz)

inithoriz = horiz

imprimare '----------------------------'

dacă vert <horiz:

GPIO.output (23, GPIO. HIGH)

GPIO.output (21, GPIO. HIGH)

GPIO.output (16, GPIO. LOW)

GPIO.output (25, GPIO. LOW)

dacă horiz <vert:

GPIO.output (16, GPIO. HIGH)

GPIO.output (25, GPIO. HIGH)

GPIO.output (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow („Cadru”, cadru)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Thresh", treierat)

raw.truncate (0)

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

pauză

cv2.destroyAllWindows ()

GPIO.cleanup ()

Pasul 3: Raspberry Pi și Mount Camera

Raspberry Pi și Mount Camera
Raspberry Pi și Mount Camera
Raspberry Pi și Mount Camera
Raspberry Pi și Mount Camera
Raspberry Pi și Mount Camera
Raspberry Pi și Mount Camera
Raspberry Pi și Mount Camera
Raspberry Pi și Mount Camera

Imprimați 3D carcasa și montarea și asamblarea camerei.

Pasul 4: Asamblarea semaforului

Ansamblu semafor
Ansamblu semafor
Ansamblu semafor
Ansamblu semafor
Ansamblu semafor
Ansamblu semafor

Testați semaforul cu o panou de testare. Fiecare set opus de LED-uri împărtășește un anod și toți au un catod comun (sol). Ar trebui să existe un total de 7 fire de intrare: 1 pentru fiecare pereche de LED-uri (6) + 1 fir de împământare. Lipiți și montați semafoarele.

Pasul 5: Cablare (Partea 1)

Cablare (partea 1)
Cablare (partea 1)
Cablare (partea 1)
Cablare (partea 1)
Cablare (partea 1)
Cablare (partea 1)
Cablare (partea 1)
Cablare (partea 1)

Lipiți știfturile femelei la aproximativ 5 picioare de sârmă. Acestea sunt laturile pe care aceste fire le vor șterge prin conductele din PVC mai târziu. Asigurați-vă că puteți distinge diferitele seturi de lumini (2 x 3 culori și 1 sol). În acest caz, am marcat capetele unui alt set de fire roșii, galbene și albastre cu sharpie, așa că știu care este.

Pasul 6: Construirea mediului

Construirea mediului
Construirea mediului
Construirea mediului
Construirea mediului
Construirea mediului
Construirea mediului
Construirea mediului
Construirea mediului

Construiți mediul înconjurător Faceți astfel un palet de lemn pătrat de 2 metri. Resturile de lemn sunt fine, deoarece vor fi acoperite. Găsește o gaură care se potrivește doar cu adaptorul tău. Forați șuruburile prin părțile laterale ale paletului pentru a fixa conducta din PVC în poziție. Tăiați placa de spumă neagră pentru a se potrivi cu paletul de lemn dedesubt. Găuriți o gaură care se potrivește în jurul țevii din PVC. Repetați în colțul opus. Marcați drumurile cu niște benzi albe.

Pasul 7: Finalizarea cadrului din PVC

Finalizarea cadrului din PVC
Finalizarea cadrului din PVC
Finalizarea cadrului din PVC
Finalizarea cadrului din PVC
Finalizarea cadrului din PVC
Finalizarea cadrului din PVC

Pe conducta superioară, găuriți o gaură care se potrivește unui pachet de fire. O gaură aspră este bună atâta timp cât puteți accesa interiorul țevilor. Trageți firele prin conductele din PVC și articulațiile cotului pentru o potrivire de test. Odată ce totul este finalizat, vopsiți PVC-ul cu puțină vopsea neagră pentru a curăța aspectul cadrului principal. Tăiați un mic spațiu într-una din țevile din PVC pentru a se potrivi cu o îmbinare în T. Adăugați o țeavă din PVC la această îmbinare în t pentru ca semaforul să atârne. Diametrul ar putea fi același cu cadrul principal (1/2 ), deși, dacă utilizați o țeavă mai subțire, asigurați-vă că cele 7 fire pot pătrunde. Prăjiți o gaură prin această conductă pentru ca semaforul să atârne de.

Pasul 8: Cablare (partea 2)

Cablare (partea 2)
Cablare (partea 2)
Cablare (partea 2)
Cablare (partea 2)
Cablare (partea 2)
Cablare (partea 2)

Re-conectați totul așa cum a fost testat anterior. Verificați de două ori semaforul și cablajul cu o placă de verificare pentru a confirma că s-au făcut toate conexiunile. Lipiți semaforul pe firele care vin prin brațul articulației T. Înfășurați firele expuse cu bandă electrică pentru a preveni orice scurtmetraj și pentru un aspect mai curat.

Pasul 9: Finalizat

Terminat!
Terminat!
Terminat!
Terminat!
Terminat!
Terminat!
Terminat!
Terminat!

Pentru a rula codul, asigurați-vă că setați sursa ca ~ /.profile și cd la locația proiectului.

Pasul 10: Extra (Fotografii)

Recomandat: