Kazalo:

Analizator prometnih vzorcev z zaznavanjem objektov v živo: 11 korakov (s slikami)
Analizator prometnih vzorcev z zaznavanjem objektov v živo: 11 korakov (s slikami)

Video: Analizator prometnih vzorcev z zaznavanjem objektov v živo: 11 korakov (s slikami)

Video: Analizator prometnih vzorcev z zaznavanjem objektov v živo: 11 korakov (s slikami)
Video: 30 глупых вопросов рекрутеру [IT карьера] 2024, November
Anonim
Image
Image
Analizator prometnih vzorcev z odkrivanjem objektov v živo
Analizator prometnih vzorcev z odkrivanjem objektov v živo

V današnjem svetu so semaforji bistveni za varno cesto. Velikokrat pa so lahko semaforji moteči v situacijah, ko se nekdo približuje luči, ko ta postane rdeča. To zapravlja čas, še posebej, če svetloba preprečuje, da bi eno vozilo prišlo skozi križišče, ko na cesti ni nikogar drugega. Moja inovacija je pameten semafor, ki uporablja zaznavanje predmetov v živo s kamere za štetje števila avtomobilov na vsaki cesti. Strojna oprema, ki jo bom uporabil za ta projekt, je Raspberry Pi 3, modul kamere in različna elektronska strojna oprema za samo svetlobo. Z uporabo OpenCV na Raspberry Pi bodo zbrani podatki potekali skozi kodo, ki nadzoruje LED diode prek GPIO. Odvisno od teh številk se bo semafor spremenil in pustil avtomobile skozi v najbolj optimalnem vrstnem redu. V tem primeru bi prevozili pas z največ avtomobili, tako da bi bil pas z manj avtomobili v prostem teku, kar bi zmanjšalo onesnaženje zraka. To bi odpravilo situacije, ko se veliko avtomobilov ustavi, medtem ko na križišču ni avtomobilov. To ne samo, da prihrani čas za vse, ampak tudi reši okolje. Čas, ko se ljudje ustavijo pri znaku za zaustavitev z motorjem v prostem teku, poveča onesnaženost zraka, zato lahko z ustvarjanjem pametnega semaforja optimiziram svetlobne vzorce, tako da avtomobili čim manj časa preživijo pri ustavljenem vozilu. Konec koncev bi lahko ta sistem semaforjev uvedli v mestih, predmestjih ali celo na podeželju, da bi bili ljudje učinkovitejši in bi zmanjšali onesnaženje zraka.

1. korak: Seznam delov

Materiali:

Raspberry Pi 3 Model B v1.2

Raspberry Pi Camera v2.1

5V/1A mikro USB napajalnik

HDMI monitor, tipkovnica, miška SD kartica z Raspbian Jessie

Prekinitveni kabel Raspberry Pi GPIO

Rdeče, rumene, zelene LED diode (po 2 v vsaki barvi)

Ženski priključki za Raspberry Pi (7 edinstvenih barv)

Različna žica s premerom 24 (različne barve) + toplotno skrčljiva cev

2'x2 'lesena plošča ali ploščad

Vijaki za les

Črna površina (karton, penasta plošča, plakat itd.)

Beli (ali katera koli druga barva, razen črnega) trak za cestne oznake

Črna barva v spreju (za PVC)

½”PVC cev s komolčnimi spoji 90 stopinj (2), T -vtičnica (1), ženski adapter (2)

Orodja

Spajkalnik

3D tiskalnik

Vrtajte z različnimi svedri

Ogledna plošča

Toplotna pištola

2. korak: Nastavitev Raspberry Pi

Kartico SD naložite v Raspberry Pi in zaženite.

Sledite tem navodilom za namestitev potrebnih knjižnic OpenCV. Poskrbite, da boste imeli čas za ta korak, saj lahko namestitev knjižnice OpenCV traja nekaj ur. Tukaj ne pozabite namestiti in nastaviti kamere.

Prav tako morate namestiti pip:

pikamera

gpiozero

RPi. GPIO

Tu je dokončana koda:

iz picamera.array uvoz PiRGBArray

iz picamere uvoz PiCamera

uvoz picamera.array

uvoz numpy kot np

čas uvoza

uvoz cv2

uvozite RPi. GPIO kot GPIO

čas uvoza

Način 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

surovo = PiRGBArray (odmik, velikost = (480, 480))

time.sleep (0,1)

colorLower = np.array

colorUpper = matrika np ([179, 255, 255])

initvert = 0

inithoriz = 0

števec = 0

za okvir v cam.capture_continuous (surovo, format = "bgr", use_video_port = True):

okvir = okvir.masa

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

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

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

mask = cv2.dilate (maska, nič, ponovitve = 5)

mask = cv2.erode (maska, nič, ponovitve = 1)

mask = cv2.dilate (maska, nič, ponovitve = 3)

jaz, thresh = cv2.threshold (maska, 127, 255, cv2. THRESH_BINARY)

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

center = Brez

vert = 0

horiz = 0

če je len (cnts)> 0:

za c v cnts:

(x, y), polmer = cv2.min Zaključni krog (c)

center = (int (x), int (y))

polmer = int (polmer)

cv2.circle (okvir, sredina, polmer, (0, 255, 0), 2)

x = int (x)

y = int (y)

če je 180 <x <300:

če y> 300:

vert = vert +1

elif y <180:

vert = vert +1

drugače:

vert = vert

če je 180 <y <300:

če je x> 300:

horiz = horiz +1

elif x <180:

horiz = horiz +1

drugače:

horiz = horiz

če vert! = initvert:

natisni "Avtomobili v navpičnem pasu:" + str (vert)

initvert = vert

natisni "Avtomobili v vodoravnem pasu:" + str (horiz)

inithoriz = horiz

natisni '----------------------------'

če horiz! = inithoriz:

natisni "Avtomobili v navpičnem pasu:" + str (vert)

initvert = vert

natisni "Avtomobili v vodoravnem pasu:" + str (horiz)

inithoriz = horiz

natisni '----------------------------'

če vert <horiz:

GPIO.izhod (23, GPIO. HIGH)

GPIO.izhod (21, GPIO. HIGH)

Izhod GPIO (16, GPIO. LOW)

GPIO.izhod (25, GPIO. LOW)

če horiz <vert:

GPIO.izhod (16, GPIO. HIGH)

GPIO.izhod (25, GPIO. HIGH)

GPIO.izhod (23, GPIO. LOW)

Izhod GPIO. (21, GPIO. LOW)

cv2.imshow ("Okvir", okvir)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Thresh", thresh)

raw.truncate (0)

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

prekiniti

cv2.destroyAllWindows ()

GPIO.cleanup ()

3. korak: Raspberry Pi in nosilec za kamero

Raspberry Pi in nosilec za kamero
Raspberry Pi in nosilec za kamero
Raspberry Pi in nosilec za kamero
Raspberry Pi in nosilec za kamero
Raspberry Pi in nosilec za kamero
Raspberry Pi in nosilec za kamero
Raspberry Pi in nosilec za kamero
Raspberry Pi in nosilec za kamero

3D -tiskanje ohišja in fotoaparata za montažo in montažo.

4. korak: Montaža semaforja

Sestava semaforja
Sestava semaforja
Sestava semaforja
Sestava semaforja
Sestava semaforja
Sestava semaforja

Preizkusite semafor s ploščico. Vsak nasprotni niz LED diod ima anodo in vsi imajo skupno katodo (ozemljitev). Skupaj mora biti 7 vhodnih žic: 1 za vsak par LEDS (6) + 1 ozemljitvena žica. Spajkajte in sestavite semaforje.

5. korak: Ožičenje (1. del)

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

Spajajte zatiče ženske glave na približno 5 čevljev žice. To so stranice, na katerih se bodo te žice kasneje prelevile skozi PVC cevi. Bodite prepričani, da lahko ločite različne sklope luči (2 x 3 barve in 1 podlago). V tem primeru sem z ostrino označil konce drugega niza rdečih, rumenih in modrih žic, da vem, kateri je kateri.

Korak 6: Gradnja okolja

Gradnja okolja
Gradnja okolja
Gradnja okolja
Gradnja okolja
Gradnja okolja
Gradnja okolja
Gradnja okolja
Gradnja okolja

Gradnja okolja Naredite takole 2 -metrsko leseno paleto. Odpadni les je v redu, saj bo pokrit. Izvrtajte luknjo, ki ustreza vašemu adapterju. Skozi stranice palete izvrtajte vijake, da pritrdite PVC cev na svoje mesto. Odrežite črno penasto ploščo, da se ujema z leseno paleto pod njo. Izvrtajte luknjo, ki se prilega okoli PVC cevi. Ponovite na nasprotnem vogalu. Ceste označite z belim trakom.

7. korak: Dokončanje PVC okvirja

Dokončanje PVC okvirja
Dokončanje PVC okvirja
Dokončanje PVC okvirja
Dokončanje PVC okvirja
Dokončanje PVC okvirja
Dokončanje PVC okvirja

Na zgornji cevi izvrtajte luknjo, v katero se lahko prilega snop žic. Groba luknja je v redu, dokler lahko dostopate do notranjosti cevi. Za preizkus prilegajte žice skozi PVC cevi in komolčne spoje. Ko je vse dokončano, pobarvajte PVC s črno barvo, da očistite videz glavnega okvirja. Odrežite majhno vrzel v eni od PVC cevi, da se prilega T-spoju. Temu t-spoju dodajte PVC cev, s katere lahko semafor visi. Premer je lahko enak glavnemu okvirju (1/2 ), če pa uporabljate tanjšo cev, se prepričajte, da se lahko 7 žic prebije skozi to luknjo.

8. korak: Ožičenje (2. del)

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

Ponovno ožičite vse, kot je bilo prej preizkušeno. Dvakrat preverite semafor in ožičenje s ploščico, da preverite, ali so vse povezave vzpostavljene. Spajajte semafor na žice, ki prihajajo skozi roko T-spoja. Odkrijte žice z električnim trakom, da preprečite kratke hlače in čistejši videz.

9. korak: Končano

Dokončano!
Dokončano!
Dokončano!
Dokončano!
Dokončano!
Dokončano!
Dokončano!
Dokončano!

Če želite zagnati kodo, izvorno nastavite kot ~/.profile in cd na mesto projekta.

10. korak: Dodatki (fotografije)

Priporočena: