Obsah:

Analyzátor dopravního obrazce pomocí detekce živých objektů: 11 kroků (s obrázky)
Analyzátor dopravního obrazce pomocí detekce živých objektů: 11 kroků (s obrázky)

Video: Analyzátor dopravního obrazce pomocí detekce živých objektů: 11 kroků (s obrázky)

Video: Analyzátor dopravního obrazce pomocí detekce živých objektů: 11 kroků (s obrázky)
Video: Popelářské potápění "Wrassling s plochou obrazovkou" 2024, Červenec
Anonim
Image
Image
Analyzátor dopravních vzorů pomocí detekce živých objektů
Analyzátor dopravních vzorů pomocí detekce živých objektů

V dnešním světě jsou semafory nezbytné pro bezpečnou cestu. Semafor však může být mnohdy nepříjemný v situacích, kdy se někdo blíží ke světlu právě ve chvíli, kdy se mění na červenou. To ztrácí čas, zvláště pokud světlo brání průjezdu jediného vozidla křižovatkou, když na silnici není nikdo jiný. Mojí novinkou je chytrý semafor, který pomocí detekce živých objektů z kamery počítá počet aut na každé silnici. Hardware, který pro tento projekt použiji, je Raspberry Pi 3, kamerový modul a různý elektronický hardware pro samotné světlo. Pomocí OpenCV na Raspberry Pi budou shromážděné informace spuštěny prostřednictvím kódu, který ovládá LED diody prostřednictvím GPIO. V závislosti na těchto číslech se změní semafor a nechá auta projít v nejoptimálnějším pořadí. V tomto případě by byl pruh s největším počtem automobilů propuštěn, aby pruh s menším počtem aut byl na volnoběh, což by snížilo znečištění ovzduší. Tím by byly odstraněny situace, kdy je mnoho aut zastaveno, zatímco na křižovatce nejsou žádná auta. Šetří to nejen čas všem, ale také životní prostředí. Doba, po kterou jsou lidé zastavováni na značce zastavení s motorem na volnoběh, zvyšuje množství znečištění ovzduší, takže vytvořením inteligentního semaforu jsem schopen optimalizovat světelné vzorce tak, aby auta strávila co nejméně času se zastaveným vozidlem. Nakonec by tento semaforový systém mohl být implementován ve městech, na předměstích nebo dokonce ve venkovských oblastech, aby byl efektivnější pro lidi a snížil by znečištění ovzduší.

Krok 1: Seznam dílů

Materiály:

Raspberry Pi 3 Model B v1.2

Kamera Raspberry Pi v2.1

Napájecí zdroj micro USB 5V/1A

HDMI monitor, klávesnice, myš SD karta s Raspbian Jessie

Odlamovací kabel Raspberry Pi GPIO

Červená, žlutá, zelená LED (2 z každé barvy)

Zásuvky pro Raspberry Pi (7 unikátních barev)

Rozmanitý drát o průměru 24 (různé barvy) + smršťovací bužírky

Dřevěný panel nebo platforma 2’x2 ‘

Vruty do dřeva

Černý povrch (lepenka, pěnová deska, plakátová tabule atd.)

Bílá (nebo jiná barva než černá) páska pro dopravní značení

Černá barva ve spreji (pro PVC)

½”PVC trubka s kolenovými klouby 90 stupňů (2), zásuvka T (1), zásuvkový adaptér (2)

Nástroje

Páječka

3D tiskárna

Vrtejte s různými vrtáky

Prkénko

Horkovzdušná pistole

Krok 2: Nastavení Raspberry Pi

Vložte kartu SD do Raspberry Pi a spusťte.

Podle této příručky nainstalujte požadované knihovny OpenCV. Udělejte si na tento krok čas, protože instalace knihovny OpenCV může trvat několik hodin. Nezapomeňte si zde také nainstalovat a nastavit kameru.

Měli byste také nainstalovat pip:

pikamera

gpiozero

RPi. GPIO

Zde je finalizovaný kód:

z picamera.array importujte PiRGBArray

z picamery import PiCamera

import picamera.array

import numpy jako np

čas importu

importovat cv2

importujte RPi. GPIO jako GPIO

čas importu

GPIO.setmode (GPIO. BCM)

pro i v (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

raw = PiRGBArray (kamera, velikost = (480, 480))

time.sleep (0,1)

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

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

initvert = 0

inithoriz = 0

čítač = 0

pro snímek v cam.capture_continuous (raw, format = "bgr", use_video_port = True):

frame = frame.array

hsv = cv2.cvtColor (rámeček, cv2. COLOR_BGR2HSV)

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

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

mask = cv2.dilate (maska, Žádná, iterace = 5)

mask = cv2.erode (maska, Žádná, iterace = 1)

mask = cv2.dilate (maska, Žádná, iterace = 3)

já, mlátit = cv2.threshold (maska, 127, 255, cv2. THRESH_BINARY)

cnts = cv2.findContours (mlátit, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]

střed = žádný

vert = 0

horizont = 0

pokud len (cnts)> 0:

pro c v cnts:

(x, y), poloměr = cv2.minEnclosingCircle (c)

střed = (int (x), int (y))

radius = int (poloměr)

cv2.circle (rám, střed, poloměr, (0, 255, 0), 2)

x = int (x)

y = int (y)

pokud 180 <x <300:

pokud y> 300:

vert = vert +1

elif y <180:

vert = vert +1

jiný:

vert = vert

pokud 180 <y <300:

pokud x> 300:

horizont = horizont +1

elif x <180:

horizont = horizont +1

jiný:

horizont = horizont

if vert! = initvert:

tisk "Auta ve svislém pruhu:" + str (vert)

initvert = vert

tisk "Auta v horizontálním pruhu:" + str (horizont)

inithoriz = horizon

tisk '----------------------------'

if horizon! = inithoriz:

tisk "Auta ve svislém pruhu:" + str (vert)

initvert = vert

tisk "Auta v horizontálním pruhu:" + str (horizont)

inithoriz = horizon

tisk '----------------------------'

pokud vert <Horiz:

GPIO.output (23, GPIO. HIGH)

GPIO.output (21, GPIO. HIGH)

GPIO.output (16, GPIO. LOW)

GPIO.output (25, GPIO. LOW)

if Horiz <vert:

GPIO.output (16, GPIO. HIGH)

GPIO.output (25, GPIO. HIGH)

GPIO.output (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow („Rámeček“, rámeček)

cv2.imshow ("HSV", hsv)

cv2.imshow („Mlátit“, mlátit)

raw.truncate (0)

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

přestávka

cv2.destroyAllWindows ()

GPIO.cleanup ()

Krok 3: Raspberry Pi a držák fotoaparátu

Raspberry Pi a držák fotoaparátu
Raspberry Pi a držák fotoaparátu
Raspberry Pi a držák fotoaparátu
Raspberry Pi a držák fotoaparátu
Raspberry Pi a držák fotoaparátu
Raspberry Pi a držák fotoaparátu
Raspberry Pi a držák fotoaparátu
Raspberry Pi a držák fotoaparátu

3D tisk pouzdra a držáku fotoaparátu a sestavení.

Krok 4: Montáž semaforu

Montáž semaforu
Montáž semaforu
Montáž semaforu
Montáž semaforu
Montáž semaforu
Montáž semaforu

Vyzkoušejte semafor pomocí prkénka. Každá protilehlá sada LED sdílí anodu a všechny sdílejí společnou katodu (uzemnění). Mělo by existovat celkem 7 vstupních vodičů: 1 pro každý pár LED diod (6) + 1 uzemňovací vodič. Pájejte a sestavujte semafory.

Krok 5: Zapojení (část 1)

Zapojení (část 1)
Zapojení (část 1)
Zapojení (část 1)
Zapojení (část 1)
Zapojení (část 1)
Zapojení (část 1)
Zapojení (část 1)
Zapojení (část 1)

Pájecí kolíky samice pájejte asi na 5 stop drátu. To jsou strany, kterými se tyto dráty později hadem protáhnou PVC trubkami. Ujistěte se, že dokážete rozlišit různé sady světel (2 x 3 barvy a 1 uzemnění). V tomto případě jsem označil konce další sady červených, žlutých a modrých vodičů pomocí Sharpie, abych věděl, který je který.

Krok 6: Budování životního prostředí

Budování životního prostředí
Budování životního prostředí
Budování životního prostředí
Budování životního prostředí
Budování životního prostředí
Budování životního prostředí
Budování životního prostředí
Budování životního prostředí

Budování životního prostředí Vyrobte si dřevěnou paletu o rozměrech 2 stopy. Šrot je v pořádku, protože bude přikrytý. Vyvrtejte otvor, který přesně odpovídá vašemu adaptéru. Vyvrtejte šrouby po stranách palety, abyste zajistili PVC trubku na místě. Odřízněte desku z černé pěny, aby odpovídala dřevěné paletě pod ní. Vyvrtejte otvor, který se vejde kolem PVC trubky. Opakujte v opačném rohu. Označte silnice bílou páskou.

Krok 7: Dokončení rámu z PVC

Dokončení rámečku z PVC
Dokončení rámečku z PVC
Dokončení rámečku z PVC
Dokončení rámečku z PVC
Dokončení rámečku z PVC
Dokončení rámečku z PVC

Na horní trubce vyvrtejte otvor, do kterého se vejde svazek drátů. Hrubý otvor je v pořádku, pokud máte přístup k vnitřkům trubek. Protáhněte dráty PVC trubkami a kolenními klouby pro zkušební uchycení. Jakmile je vše dokončeno, natřete PVC nějakou černou barvou ve spreji, abyste vyčistili vzhled hlavního rámu. Vyřízněte malou mezeru v jedné z trubek z PVC, aby se vešly na T-spoj. Přidejte k tomuto t-spoji PVC trubku, ze které bude viset semafor. Průměr by mohl být stejný jako u hlavního rámu (1/2 ), ale pokud použijete tenčí trubku, ujistěte se, že 7 drátů může protáhnout skrz ni. Vyvrtejte do této trubky díru, ze které bude viset semafor.

Krok 8: Zapojení (část 2)

Zapojení (část 2)
Zapojení (část 2)
Zapojení (část 2)
Zapojení (část 2)
Zapojení (část 2)
Zapojení (část 2)

Znovu zapojte vše, jak bylo testováno dříve. Dvojitým zkontrolováním semaforu a kabeláže pomocí prkénka zkontrolujte, zda byla provedena všechna připojení. Pájejte semafor na dráty procházející ramenem T-kloubu. Obnažte odkryté dráty elektrickou páskou, abyste zabránili zkratům a vypadali čistěji.

Krok 9: Hotovo

Hotovo!
Hotovo!
Hotovo!
Hotovo!
Hotovo!
Hotovo!
Hotovo!
Hotovo!

Chcete -li spustit kód, nezapomeňte nastavit zdroj jako ~/.profile a cd na umístění projektu.

Krok 10: Doplňky (fotografie)

Doporučuje: