Inhoudsopgave:

Traffic Pattern Analyzer met behulp van live objectdetectie - Ajarnpa
Traffic Pattern Analyzer met behulp van live objectdetectie - Ajarnpa

Video: Traffic Pattern Analyzer met behulp van live objectdetectie - Ajarnpa

Video: Traffic Pattern Analyzer met behulp van live objectdetectie - Ajarnpa
Video: THIS IS HOW YOU CAN MAKE $1400💰 PER DAY WITH ONE DOMAIN (Make Money Online) 2024, November
Anonim
Image
Image
Verkeerspatroonanalyse met behulp van live objectdetectie
Verkeerspatroonanalyse met behulp van live objectdetectie

In de wereld van vandaag zijn verkeerslichten essentieel voor een veilige weg. Vaak kunnen verkeerslichten echter vervelend zijn in situaties waarin iemand het licht nadert op het moment dat het op rood springt. Dit verspilt tijd, vooral als het licht verhindert dat een enkel voertuig het kruispunt oversteekt terwijl er niemand anders op de weg is. Mijn innovatie is een slim verkeerslicht dat gebruik maakt van live objectdetectie van een camera om het aantal auto's op elke weg te tellen. De hardware die ik voor dit project zal gebruiken, is een Raspberry Pi 3, een cameramodule en verschillende elektronische hardware voor het licht zelf. Met behulp van OpenCV op de Raspberry Pi wordt de verzamelde informatie door code geleid die de LED's via de GPIO bestuurt. Afhankelijk van deze aantallen verandert het stoplicht, waardoor auto's in de meest optimale volgorde kunnen worden doorgelaten. In dit geval zou de rijstrook met de meeste auto's worden doorgelaten, zodat de rijstrook met minder auto's stationair zou draaien, waardoor de luchtvervuiling zou afnemen. Dit zou situaties elimineren waarin veel auto's worden gestopt terwijl er geen auto's op de kruisende weg zijn. Dit bespaart niet alleen tijd voor iedereen, maar het spaart ook het milieu. De hoeveelheid tijd dat mensen worden gestopt bij een stopbord terwijl hun motor stationair draait, verhoogt de hoeveelheid luchtvervuiling, dus door een slim verkeerslicht te creëren, kan ik de lichtpatronen optimaliseren zodat auto's zo min mogelijk tijd doorbrengen met hun voertuig gestopt. Uiteindelijk zou dit verkeerslichtsysteem in steden, buitenwijken of zelfs landelijke gebieden kunnen worden geïmplementeerd om efficiënter te zijn voor mensen en de luchtvervuiling te verminderen.

Stap 1: Onderdelenlijst

Materialen:

Raspberry Pi 3 Model B v1.2

Raspberry Pi-camera v2.1

5V/1A micro-USB-voeding

HDMI-monitor, toetsenbord, muis SD-kaart met Raspbian Jessie

Raspberry Pi GPIO breakout-kabel

Rode, gele, groene LED's (2 van elke kleur)

Vrouwelijke connectoren voor Raspberry Pi (7 unieke kleuren)

Diverse 24 gauge draad (verschillende kleuren) + krimpkous

2'x2' houten paneel of platform

Houtschroeven

Zwart oppervlak (karton, foamboard, posterboard, etc.)

Witte (of een andere kleur dan zwarte) tape voor wegmarkeringen

Zwarte spuitverf (voor PVC)

½” PVC-buis met 90 graden elleboogverbindingen (2), T-mof (1), vrouwelijke adapter (2)

Gereedschap

Soldeerbout

3D-printer

Boor met verschillende boren

Breadboard

Hitte geweer

Stap 2: De Raspberry Pi instellen

Laad de SD-kaart in de Raspberry Pi en start op.

Volg deze handleiding om de vereiste OpenCV-bibliotheken te installeren. Zorg ervoor dat je tijd hebt om deze stap te doen, aangezien het installeren van de OpenCV-bibliotheek een paar uur kan duren. Zorg ervoor dat u hier ook uw camera installeert en instelt.

Je moet ook pip installeren:

picamera

gpiozero

RPi. GPIO

Hier is de definitieve code:

van picamera.array import PiRGBArray

van picamera import PiCamera

importeer picamera.array

importeer numpy als np

import tijd

import cv2

importeer RPi. GPIO als GPIO

import tijd

GPIO.setmode(GPIO. BCM)

voor i in (23, 25, 16, 21):

GPIO.setup(i, GPIO. OUT)

cam = PiCamera()

cameraresolutie=(480, 480)

cam.framerate=30

raw=PiRGBArray(cam, size=(480, 480))

tijd.slaap(0.1)

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

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

initvert = 0

inithoriz = 0

teller = 0

voor frame in cam.capture_continuous(raw, format="bgr", use_video_port=True):

frame = frame.array

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

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

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

mask= cv2.dilate(masker, Geen, iteraties=5)

mask= cv2.erode(masker, Geen, iteraties=1)

mask= cv2.dilate(masker, Geen, iteraties=3)

ik, thresh = cv2.threshold (masker, 127, 255, cv2. THRESH_BINARY)

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

centrum = Geen

vert = 0

horizon = 0

als len(cnts) > 0:

voor c in cnts:

(x, y), straal = cv2.minOmsluitende cirkel(c)

centrum = (int(x), int(y))

straal = int(straal)

cv2.cirkel(frame, middelpunt, straal, (0, 255, 0), 2)

x = int(x)

y = int(y)

indien 180 < x < 300:

indien y > 300:

vert = vert +1

elif y < 180:

vert = vert +1

anders:

vert = vert

indien 180 < y < 300:

als x > 300:

horiz = horiz +1

elif x < 180:

horiz = horiz +1

anders:

horiz = horiz

if vert != initvert:

print"Auto's in verticale rijstrook: " + str(vert)

initvert = vert

print"Auto's in horizontale baan: " + str(horiz)

inithoriz = horiz

afdrukken '----------------------------'

if horiz != inithoriz:

print"Auto's in verticale rijstrook: " + str(vert)

initvert = vert

print"Auto's in horizontale baan: " + str(horiz)

inithoriz = horiz

afdrukken '----------------------------'

als vert <horiz:

GPIO.uitgang(23, GPIO. HOOG)

GPIO.uitgang(21, GPIO. HOOG)

GPIO.output (16, GPIO. LOW)

GPIO.uitgang (25, GPIO. LAAG)

als horiz < vert:

GPIO.uitgang (16, GPIO. HOOG)

GPIO.uitgang(25, GPIO. HOOG)

GPIO.uitgang (23, GPIO. LAAG)

GPIO.uitgang(21, GPIO. LAAG)

cv2.imshow("Frame", frame)

cv2.imshow("HSV", hsv)

cv2.imshow("Dors", dorst)

onbewerkt.truncate(0)

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

pauze

cv2.destroyAllWindows()

GPIO.opschonen()

Stap 3: Raspberry Pi en camerabevestiging

Raspberry Pi en camerabevestiging
Raspberry Pi en camerabevestiging
Raspberry Pi en camerabevestiging
Raspberry Pi en camerabevestiging
Raspberry Pi en camerabevestiging
Raspberry Pi en camerabevestiging
Raspberry Pi en camerabevestiging
Raspberry Pi en camerabevestiging

3D print de behuizing en camera monteren en monteren.

Stap 4: Verkeerslichtmontage

Verkeerslicht montage
Verkeerslicht montage
Verkeerslicht montage
Verkeerslicht montage
Verkeerslicht montage
Verkeerslicht montage

Test het verkeerslicht uit met een breadboard. Elke tegenoverliggende set LED's deelt een anode en ze delen allemaal een gemeenschappelijke kathode (aarde). Er moeten in totaal 7 ingangsdraden zijn: 1 voor elk paar LEDS (6) + 1 aardingsdraad. Soldeer en monteer de verkeerslichten.

Stap 5: Bedrading (deel 1)

Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)

Soldeer de vrouwelijke header-pinnen tot ongeveer 5 voet draad. Dit zijn de zijkanten die deze draden later door de PVC-buizen zullen slingeren. Zorg ervoor dat u de verschillende sets lampen kunt onderscheiden (2 x 3 kleuren en 1 grond). In dit geval heb ik de uiteinden van een andere set rode, gele en blauwe draden gemarkeerd met een scherpe punt, zodat ik weet welke welke is.

Stap 6: Bouwen aan de omgeving

Bouwen aan de omgeving
Bouwen aan de omgeving
Bouwen aan de omgeving
Bouwen aan de omgeving
Bouwen aan de omgeving
Bouwen aan de omgeving
Bouwen aan de omgeving
Bouwen aan de omgeving

Bouwen aan de omgeving Maak op deze manier een vierkante houten pallet van 2 voet. Sloophout is prima, want het wordt afgedekt. Boor een gat dat precies in uw adapter past. Boor schroeven door de zijkanten van de pallet om de PVC-buis op zijn plaats te bevestigen. Snijd de zwarte schuimplaat zodat deze overeenkomt met de houten pallet eronder. Boor een gat dat rond de PVC-buis past. Herhaal op de tegenoverliggende hoek. Markeer de wegen met wat witte tape.

Stap 7: Het PVC-frame afronden

Het PVC-frame afronden
Het PVC-frame afronden
Het PVC-frame afronden
Het PVC-frame afronden
Het PVC-frame afronden
Het PVC-frame afronden

Boor in de bovenste pijp een gat waar een bundel draden in past. Een ruw gat is prima, zolang je maar toegang hebt tot de binnenkant van de pijpen. Slang de draden door de PVC-buizen en elleboogverbindingen voor een testpassing. Zodra alles is voltooid, schildert u het PVC met wat zwarte spuitverf om het uiterlijk van het hoofdframe op te ruimen. Snijd een kleine opening in een van de PVC-buizen om een T-verbinding te passen. Voeg een PVC-buis toe aan deze T-verbinding voor het stoplicht om aan te hangen. De diameter kan hetzelfde zijn als het hoofdframe (1/2 ), maar als je een dunnere pijp gebruikt, zorg er dan voor dat de 7 draden er doorheen kunnen kronkelen. Boor een gat door deze pijp om het verkeerslicht aan te hangen.

Stap 8: bedrading (deel 2)

Bedrading (deel 2)
Bedrading (deel 2)
Bedrading (deel 2)
Bedrading (deel 2)
Bedrading (deel 2)
Bedrading (deel 2)

Sluit alles opnieuw aan zoals eerder getest. Controleer het verkeerslicht en de bedrading nogmaals met een breadboard om te bevestigen dat alle verbindingen zijn gemaakt. Soldeer het verkeerslicht aan de draden die door de T-verbindingsarm komen. Wikkel de blootliggende draden in met isolatietape om kortsluiting te voorkomen en voor een schoner uiterlijk.

Stap 9: Klaar

Afgewerkt!
Afgewerkt!
Afgewerkt!
Afgewerkt!
Afgewerkt!
Afgewerkt!
Afgewerkt!
Afgewerkt!

Om de code uit te voeren, moet u uw bron instellen als ~/.profile en cd naar uw projectlocatie.

Stap 10: Extra's (foto's)

Aanbevolen: