Cuprins:
- Pasul 1: Lista pieselor
- Pasul 2: Configurarea Raspberry Pi
- Pasul 3: Raspberry Pi și Mount Camera
- Pasul 4: Asamblarea semaforului
- Pasul 5: Cablare (Partea 1)
- Pasul 6: Construirea mediului
- Pasul 7: Finalizarea cadrului din PVC
- Pasul 8: Cablare (partea 2)
- Pasul 9: Finalizat
- Pasul 10: Extra (Fotografii)
Video: Analizator de modele de trafic folosind detectarea obiectelor live: 11 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Î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
Imprimați 3D carcasa și montarea și asamblarea camerei.
Pasul 4: Asamblarea semaforului
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)
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
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
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)
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
Pentru a rula codul, asigurați-vă că setați sursa ca ~ /.profile și cd la locația proiectului.
Pasul 10: Extra (Fotografii)
Recomandat:
Detectarea obiectelor cu plăci Sipeed MaiX (Kendryte K210): 6 pași
Detectarea obiectelor cu plăcile Sipeed MaiX (Kendryte K210): Ca o continuare a articolului meu anterior despre recunoașterea imaginilor cu plăcile Sipeed MaiX, am decis să scriu un alt tutorial, concentrându-mă pe detectarea obiectelor. Recent a apărut un hardware interesant cu cipul Kendryte K210, inclusiv S
Detectarea obiectelor Raspberry Pi: 7 pași
Detectarea obiectelor Raspberry Pi: acest ghid oferă instrucțiuni pas cu pas pentru configurarea API-ului de detectare a obiectelor TensorFlow pe Raspberry Pi. Urmând pașii din acest ghid, veți putea folosi Raspberry Pi pentru a efectua detectarea obiectelor pe videoclipuri live de la un P
Urmărirea obiectelor bazate pe detectarea culorii: 10 pași
Urmărirea obiectelor bazate pe detectarea culorilor: Povestea Am făcut acest proiect pentru a învăța procesarea imaginilor folosind Raspberry PI și CV deschis. Pentru a face acest proiect mai interesant, am folosit două servomotoare SG90 și am montat camera pe acesta. Un motor folosit pentru a se deplasa orizontal și al doilea motor folosit pentru a se deplasa vertical
Detectarea obiectelor cu Dragonboard 410c sau 820c folosind OpenCV și Tensorflow .: 4 pași
Detectarea obiectelor W / Dragonboard 410c sau 820c folosind OpenCV și Tensorflow .: Acest instructable descrie cum să instalați OpenCV, Tensorflow și cadrele de învățare automată pentru Python 3.5 pentru a rula aplicația de detectare a obiectelor
Detectarea obiectelor vizuale cu o cameră (TfCD): 15 pași (cu imagini)
Detecția vizuală a obiectelor cu o cameră (TfCD): serviciile cognitive care pot recunoaște emoțiile, fețele oamenilor sau obiectele simple sunt în prezent încă într-un stadiu incipient de dezvoltare, dar odată cu învățarea automată, această tehnologie se dezvoltă din ce în ce mai mult. Ne putem aștepta să vedem mai mult din această magie în