Innehållsförteckning:
- Steg 1: Dellista
- Steg 2: Konfigurera Raspberry Pi
- Steg 3: Raspberry Pi och kamerafäste
- Steg 4: Trafikljusmontering
- Steg 5: Kabeldragning (del 1)
- Steg 6: Bygga miljön
- Steg 7: Avsluta PVC -ramen
- Steg 8: Kabeldragning (del 2)
- Steg 9: Avslutad
- Steg 10: Extra (foton)
Video: Trafikmönsteranalysator med Live Object Detection: 11 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
I dagens värld är trafikljus avgörande för en säker väg. Men många gånger kan trafikljus vara irriterande i situationer där någon närmar sig ljuset precis som det blir rött. Detta slösar tid, särskilt om ljuset hindrar ett enda fordon från att ta sig genom korsningen när det inte finns någon annan på vägen. Min innovation är ett smart trafikljus som använder liveobjektdetektering från en kamera för att räkna antalet bilar på varje väg. Hårdvaran jag kommer att använda för detta projekt är en Raspberry Pi 3, en kameramodul och olika elektroniska hårdvaror för själva ljuset. Med OpenCV på Raspberry Pi körs den insamlade informationen genom kod som styr lysdioderna via GPIO. Beroende på dessa siffror kommer trafikljuset att ändras, så att bilar släpps igenom i den mest optimala ordningen. I det här fallet skulle banan med flest bilar släppas igenom så att banan med färre bilar skulle gå på tomgång och minska luftföroreningarna. Detta skulle eliminera situationer när många bilar stoppas medan det inte finns några bilar på den korsande vägen. Detta sparar inte bara tid för alla, utan det sparar också miljön. Mängden tid folk stannar vid ett stoppskylt med motorn i tomgång ökar mängden luftföroreningar, så genom att skapa ett smart trafikljus kan jag optimera ljusmönstren så att bilar tillbringar minsta möjliga tid med sitt fordon stannat. I slutändan kan detta trafikljussystem implementeras i städer, förorter eller till och med på landsbygden för att vara mer effektivt för människor skulle minska luftföroreningar.
Steg 1: Dellista
Material:
Raspberry Pi 3 Model B v1.2
Raspberry Pi -kamera v2.1
5V/1A mikro -USB -strömförsörjning
HDMI -skärm, tangentbord, mus -SD -kort med Raspbian Jessie
Raspberry Pi GPIO -brytkabel
Röda, gula, gröna lysdioder (2 av varje färg)
Kontaktdon för Raspberry Pi (7 unika färger)
Diverse 24 gauge tråd (olika färger) + värmekrympslang
2'x2 'träpanel eller plattform
Träskruvar
Svart yta (kartong, skumbräda, affischbräda, etc.)
Vit (eller annan färg än svart) tejp för vägmarkeringar
Svart sprayfärg (för PVC)
½”PVC -rör med 90 graders armbågsfogar (2), T -uttag (1), honadapter (2)
Verktyg
Lödkolv
3d skrivare
Borra med olika borr
Bakbord
Värmepistol
Steg 2: Konfigurera Raspberry Pi
Ladda SD -kortet i Raspberry Pi och starta upp.
Följ den här guiden för att installera nödvändiga OpenCV -bibliotek. Se till att du har tid att utföra detta steg, eftersom installationen av OpenCV -biblioteket kan ta ett par timmar. Var noga med att också installera och konfigurera din kamera här.
Du bör också pipinstallera:
picamera
gpiozero
RPi. GPIO
Här är den slutgiltiga koden:
från picamera.array importera PiRGBArray
från picamera import PiCamera
importera picamera.array
importera numpy som np
importtid
importera cv2
importera RPi. GPIO som GPIO
importtid
GPIO.setmode (GPIO. BCM)
för i in (23, 25, 16, 21):
GPIO.setup (i, GPIO. OUT)
cam = PiCamera ()
cam.resolution = (480, 480)
cam.framerate = 30
raw = PiRGBArray (kamera, storlek = (480, 480))
time.sleep (0,1)
colorLower = np.array ([0, 100, 100])
colorUpper = np.array ([179, 255, 255])
initvert = 0
inithoriz = 0
räknare = 0
för ram i cam.capture_continuous (raw, format = "bgr", use_video_port = True):
ram = ram.array
hsv = cv2.cvtColor (ram, cv2. COLOR_BGR2HSV)
mask = cv2.inRange (hsv, colorLower, colorUpper)
mask = cv2.blur (mask, (3, 3))
mask = cv2.dilate (mask, None, iterations = 5)
mask = cv2.erode (mask, None, iterations = 1)
mask = cv2.dilate (mask, None, iterations = 3)
jag, tröskan = cv2.tröskel (mask, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findContours (trösk, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]
center = Ingen
vert = 0
horisont = 0
om len (cnts)> 0:
för c i cnts:
(x, y), radie = cv2.minEnclosingCircle (c)
center = (int (x), int (y))
radie = int (radie)
cv2.cirkel (ram, centrum, radie, (0, 255, 0), 2)
x = int (x)
y = int (y)
om 180 <x <300:
om y> 300:
vert = vert +1
elif y <180:
vert = vert +1
annan:
vert = vert
om 180 <y <300:
om x> 300:
horison = horisont +1
elif x <180:
horison = horisont +1
annan:
horison = horisont
om vert! = initvert:
print "Bilar i vertikalt körfält:" + str (vert)
initvert = vert
print "Bilar i horisontell körfält:" + str (horisont)
inithoriz = horizon
skriv ut '----------------------------'
if horizon! = inithoriz:
print "Bilar i vertikalt körfält:" + str (vert)
initvert = vert
print "Bilar i horisontell körfält:" + str (horisont)
inithoriz = horizon
skriv ut '----------------------------'
om vert <horizon:
GPIO.output (23, GPIO. HIGH)
GPIO.output (21, GPIO. HIGH)
GPIO.output (16, GPIO. LOW)
GPIO.output (25, GPIO. LOW)
om horisont <vert:
GPIO.output (16, GPIO. HIGH)
GPIO.output (25, GPIO. HIGH)
GPIO.output (23, GPIO. LOW)
GPIO.output (21, GPIO. LOW)
cv2.imshow ("Frame", ram)
cv2.imshow ("HSV", hsv)
cv2.imshow ("Thresh", tröskning)
raw. trunkera (0)
om cv2.waitKey (1) & 0xFF == ord ('q'):
ha sönder
cv2.destroyAllWindows ()
GPIO.cleanup ()
Steg 3: Raspberry Pi och kamerafäste
3D -utskrift av fodral och kamerafäste och montering.
Steg 4: Trafikljusmontering
Testa trafikljuset med en brödbräda. Varje motsatt uppsättning lysdioder delar en anod, och alla delar en gemensam katod (jord). Det ska finnas totalt 7 ingångstrådar: 1 för varje par LEDS (6) + 1 jordledning. Löd och montera trafikljusen.
Steg 5: Kabeldragning (del 1)
Löd den kvinnliga huvudstiften till cirka 5 fot tråd. Det här är sidorna som dessa trådar kommer att snake genom PVC -rören senare. Se till att kunna skilja de olika uppsättningarna ljus (2 x 3 färger och 1 mark). I det här fallet markerade jag ändarna på en annan uppsättning röda, gula och blå trådar med skärpa så jag vet vilken som är vilken.
Steg 6: Bygga miljön
Bygga miljön Gör en 2 fot fyrkantig träpall så här. Skrot är bra eftersom det kommer att täckas över. Borra ett hål som passar just din adapter. Borra skruvar genom sidorna på pallen för att fästa PVC -röret på plats. Skär den svarta skumbrädan så att den matchar träpallen under. Borra ett hål som passar runt PVC -röret. Upprepa i motsatt hörn. Markera vägarna med lite tejp.
Steg 7: Avsluta PVC -ramen
På det övre röret, borra ett hål som passar en bunt trådar. Ett grovt hål är bra så länge du kan komma åt rörens insida. Dra kablarna genom PVC -rören och armbågsfogarna för en testpassning. När allt är klart målar du PVC med lite svart sprayfärg för att städa ut huvudramens utseende. Skär ett litet gap i ett av PVC-rören för att passa en T-fog. Lägg till ett PVC-rör i denna t-skarv för trafikljuset att hänga ner från. Diametern kan vara densamma som huvudramen (1/2 ), men om du använder ett tunnare rör, se till att de 7 trådarna kan slingra igenom. Borra ett hål genom detta rör för trafikljuset att hänga från.
Steg 8: Kabeldragning (del 2)
Dra om allt som testats tidigare. Dubbelkolla trafikljuset och ledningarna med en brödbräda för att bekräfta att alla anslutningar har gjorts. Löd trafikljuset till trådarna som kommer genom T-ledarmen. Linda de exponerade trådarna med eltejp för att förhindra eventuella shorts och för ett renare utseende.
Steg 9: Avslutad
För att köra koden måste du ställa in din källa som ~/.profil och cd till din projektplats.
Steg 10: Extra (foton)
Rekommenderad:
Raspberry Pi Object Detection: 7 steg
Raspberry Pi Object Detection: Den här guiden innehåller steg-för-steg-instruktioner för hur du konfigurerar TensorFlows Object Detection API på Raspberry Pi. Genom att följa stegen i den här guiden kommer du att kunna använda din Raspberry Pi för att utföra objektdetektering på livevideo från en P
Raspberry Pi - Autonom Mars Rover med OpenCV Object Tracking: 7 steg (med bilder)
Raspberry Pi - Autonom Mars Rover med OpenCV Object Tracking: Drivs av en Raspberry Pi 3, Open CV -objektigenkänning, ultraljudssensorer och växlade DC -motorer. Denna rover kan spåra alla föremål den är utbildad för och röra sig på vilken terräng som helst
RASPBERRY PI Pi OBJECT DETECTION WITH MULTIPLE CAMERA'S: 3 Steps
RASPBERRY PI Pi OBJEKTDETEKTION MED MULTIPLE CAMERAS: Jag ska hålla introt kort, eftersom själva titeln antyder vad huvudsyftet med den instruerbara är. I denna steg-för-steg-instruktion kommer jag att förklara hur du ansluter flera kameror som 1-pi-kamera och minst en USB-kamera eller 2 USB-kameror.
Jetson Nano Quadruped Robot Object Detection Tutorial: 4 Steg
Jetson Nano Quadruped Robot Object Detection Tutorial: Nvidia Jetson Nano är ett utvecklarpaket som består av ett SoM (System on Module) och ett referensbärarkort. Det är främst inriktat på att skapa inbäddade system som kräver hög processorkraft för maskininlärning, maskinsyn och video
Visual Object Detection With a Camera (TfCD): 15 steg (med bilder)
Visual Object Detection With a Camera (TfCD): Kognitiva tjänster som kan känna igen känslor, ansikten hos människor eller enkla objekt är för närvarande fortfarande i ett tidigt utvecklingsstadium, men med maskininlärning utvecklas denna teknik alltmer. Vi kan förvänta oss att se mer av denna magi i