Sisukord:

Liiklusmustri analüsaator reaalajas objektide tuvastamise abil: 11 sammu (piltidega)
Liiklusmustri analüsaator reaalajas objektide tuvastamise abil: 11 sammu (piltidega)

Video: Liiklusmustri analüsaator reaalajas objektide tuvastamise abil: 11 sammu (piltidega)

Video: Liiklusmustri analüsaator reaalajas objektide tuvastamise abil: 11 sammu (piltidega)
Video: Можно ли пить соду, и к чему это приведёт 2024, Juuli
Anonim
Image
Image
Liiklusmustri analüsaator, mis kasutab reaalajas objektide tuvastamist
Liiklusmustri analüsaator, mis kasutab reaalajas objektide tuvastamist

Tänapäeva maailmas on valgusfoorid ohutu tee jaoks hädavajalikud. Kuid mitu korda võivad foorid olla tüütud olukordades, kus keegi läheneb tulele just siis, kui see punaseks läheb. See raiskab aega, eriti kui valgus takistab ühe sõiduki läbimist ristmikust, kui teel pole kedagi teist. Minu uuendus on nutikas valgusfoor, mis kasutab kaamerast reaalajas objektide tuvastamist, et lugeda igal teel olevate autode arvu. Riistvara, mida ma selle projekti jaoks kasutan, on Raspberry Pi 3, kaamera moodul ja valguse enda jaoks mitmesugune elektrooniline riistvara. Kasutades OpenCV -d Raspberry Pi -l, juhitakse kogutud teave läbi koodi, mis juhib LED -e GPIO kaudu. Sõltuvalt nendest numbritest valgusfoor muutub, lastes autod läbi kõige optimaalsemas järjekorras. Sellisel juhul lastaks läbi sõidurada, kus on kõige rohkem autosid, nii et vähemate autodega rada jääks tühikäigule, vähendades õhusaastet. See välistaks olukorrad, kui paljud autod peatatakse, kui ristuval teel pole ühtegi autot. See mitte ainult ei säästa aega kõigile, vaid säästab ka keskkonda. Aeg, mil inimesed peatuvad peatumismärgi juures tühikäigul töötava mootoriga, suurendab õhusaaste hulka, nii et nutika valgusfoori loomisega suudan optimeerida valgusmustreid nii, et autod veedavad võimalikult vähe aega peatatud sõidukiga. Lõppkokkuvõttes võiks seda valgusfoorisüsteemi rakendada linnades, eeslinnades või isegi maapiirkondades, et see oleks inimeste jaoks tõhusam, vähendaks õhusaastet.

Samm: osade loend

Materjalid:

Vaarika Pi 3 mudel B v1.2

Raspberry Pi kaamera v2.1

5V/1A mikro -USB toiteallikas

HDMI -monitor, klaviatuur, hiire SD -kaart koos Raspbian Jessiega

Raspberry Pi GPIO läbilöögikaabel

Punased, kollased, rohelised LED -id (2 iga värvi)

Naisühendused Raspberry Pi jaoks (7 ainulaadset värvi)

24 -meetrine traat (erinevad värvid) + termokahanev toru

2'x2 'puitpaneel või platvorm

Puidust kruvid

Must pind (papp, vahtplaat, plakatiplaat jne)

Valge (või mis tahes muu värv peale musta) teip teekattemärgistamiseks

Must pihustusvärv (PVC jaoks)

½”PVC toru 90 -kraadiste küünarliigenditega (2), T -pistikupesa (1), naissoost adapter (2)

Tööriistad

Jootekolb

3D printer

Puurige erinevate puuridega

Leivalaud

Soojuspüstol

2. samm: seadistage Raspberry Pi

Laadige SD -kaart Raspberry Pi -sse ja käivitage.

Nõutavate OpenCV teekide installimiseks järgige seda juhendit. Veenduge, et teil oleks selle toimingu tegemiseks aega, sest OpenCV kogu installimine võib võtta paar tundi. Installige ja seadistage kindlasti ka kaamera siia.

Peaksite ka pip installima:

picamera

gpiozero

RPi. GPIO

Siin on lõplik kood:

saidilt picamera.array import PiRGBArray

alates picamera import PiCamera

impordi picamera.array

import numpy np -na

impordi aeg

import cv2

RPi. GPIO importimine GPIO -na

impordi aeg

GPIO.setmode (GPIO. BCM)

i jaoks (23, 25, 16, 21):

GPIO.seadistus (i, GPIO. OUT)

nukk = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

toores = PiRGBArray (nukk, suurus = (480, 480))

aeg. uni (0,1)

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

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

initvert = 0

inithoriz = 0

loendur = 0

kaadri jaoks cam.capture_continuous (raw, format = "bgr", use_video_port = True):

raam = raam.massiiv

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

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

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

mask = cv2.dilate (mask, puudub, iteratsioonid = 5)

mask = cv2.erode (mask, puudub, iteratsioonid = 1)

mask = cv2.dilate (mask, puudub, iteratsioonid = 3)

mina, künnis = cv2.threshold (mask, 127, 255, cv2. THRESH_BINARY)

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

keskus = puudub

vert = 0

horisont = 0

kui len (cnts)> 0:

c jaoks cnts:

(x, y), raadius = cv2.minEnclosingCircle (c)

keskus = (int (x), int (y))

raadius = int (raadius)

cv2.ring (raam, keskel, raadius, (0, 255, 0), 2)

x = int (x)

y = int (y)

kui 180 <x <300:

kui y> 300:

vert = vert +1

el <y: 180

vert = vert +1

muidu:

vert = vert

kui 180 <y <300:

kui x> 300:

horisont = horisont +1

elif x <180:

horisont = horisont +1

muidu:

horisont = horisont

kui vert! = initvert:

print "Autod vertikaalsel sõidurajal:" + str (vert)

initvert = vert

trükk "Autod horisontaalsel sõidurajal:" + str (horisont)

inithoriz = horisont

print '----------------------------'

kui horis! = inithoriz:

print "Autod vertikaalsel sõidurajal:" + str (vert)

initvert = vert

trükk "Autod horisontaalsel sõidurajal:" + str (horisont)

inithoriz = horisont

print '----------------------------'

kui vert <horisont:

GPIO väljund (23, GPIO. HIGH)

GPIO väljund (21, GPIO. HIGH)

GPIO väljund (16, GPIO. LOW)

GPIO väljund (25, GPIO. LOW)

kui horisont <vert:

GPIO väljund (16, GPIO. HIGH)

GPIO väljund (25, GPIO. HIGH)

GPIO väljund (23, GPIO. LOW)

GPIO väljund (21, GPIO. LOW)

cv2.imshow ("Raam", kaader)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Thresh", threes)

toores.truncate (0)

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

murda

cv2.destroyAllWindows ()

GPIO.cleanup ()

Samm: Raspberry Pi ja kaamera kinnitus

Raspberry Pi ja kaamera kinnitus
Raspberry Pi ja kaamera kinnitus
Raspberry Pi ja kaamera kinnitus
Raspberry Pi ja kaamera kinnitus
Raspberry Pi ja kaamera kinnitus
Raspberry Pi ja kaamera kinnitus
Raspberry Pi ja kaamera kinnitus
Raspberry Pi ja kaamera kinnitus

3D printida ümbris ja kaamera kinnitada ja kokku panna.

4. samm: valgusfoori kokkupanek

Fooride komplekt
Fooride komplekt
Fooride komplekt
Fooride komplekt
Fooride komplekt
Fooride komplekt

Proovige valgusfoori leivaplaadiga. Kõigil vastandlikel LED -idel on ühine anood ja kõigil on ühine katood (maandus). Sisendjuhtmeid peaks olema kokku 7: 1 iga LED -i paari (6) kohta + 1 maandusjuhe. Jootke ja pange foorid kokku.

5. samm: juhtmestik (1. osa)

Juhtmestik (1. osa)
Juhtmestik (1. osa)
Juhtmestik (1. osa)
Juhtmestik (1. osa)
Juhtmestik (1. osa)
Juhtmestik (1. osa)
Juhtmestik (1. osa)
Juhtmestik (1. osa)

Jootke emase päise tihvtid umbes 5 jalga traadi külge. Need on küljed, mida need juhtmed hiljem läbi PVC torude madistavad. Kindlasti saate eristada erinevaid tulede komplekte (2 x 3 värvi ja 1 maapind). Sel juhul märkisin teise punase, kollase ja sinise juhtme komplekti otsad teravatega, nii et ma tean, mis on kumb.

6. samm: keskkonna loomine

Keskkonna loomine
Keskkonna loomine
Keskkonna loomine
Keskkonna loomine
Keskkonna loomine
Keskkonna loomine
Keskkonna loomine
Keskkonna loomine

Keskkonna loomine Tehke 2 -meetrine neljakandiline puidust kaubaalus. Vanapuit on hea, kuna see kaetakse kinni. Puurige auk, mis sobib teie adapteriga. Puurige kruvid läbi kaubaaluse külgede, et kinnitada PVC toru oma kohale. Lõika must vahtplaat nii, et see vastaks all olevale puidust kaubaalusele. Puurige auk, mis sobib PVC toru ümber. Korda vastasnurgas. Märkige teed mõne valge lindi abil.

Samm: PVC raami viimistlemine

PVC raami viimistlemine
PVC raami viimistlemine
PVC raami viimistlemine
PVC raami viimistlemine
PVC raami viimistlemine
PVC raami viimistlemine

Puurige ülemisele torule auk, kuhu mahub juhtmekimp. Kare auk on hea, kui pääsete juurde torude sisekülgedele. Katsetamiseks sobitage juhtmed läbi PVC -torude ja küünarliigeste. Kui kõik on lõpule viidud, värvige põhiraami välimuse puhastamiseks PVC mõne musta pihustusvärviga. Lõigake ühes PVC-torus väike vahe, et see sobiks T-liigendiga. Lisage sellele t-liigendile PVC toru, et valgusfoor saaks üles riputada. Läbimõõt võib olla sama kui põhiraamil (1/2 ), kuid kui kasutate õhemat toru, veenduge, et 7 juhtmest saaks läbi käia. Puurige selle toru kaudu foori riputamiseks auk.

8. samm: juhtmestik (2. osa)

Juhtmestik (2. osa)
Juhtmestik (2. osa)
Juhtmestik (2. osa)
Juhtmestik (2. osa)
Juhtmestik (2. osa)
Juhtmestik (2. osa)

Ühendage kõik uuesti, nagu eelnevalt testitud. Kontrollige veel kord valgusfoori ja juhtmeid leivaplaadiga, et kõik ühendused oleks tehtud. Jootke valgusfoor T-liigendvarre kaudu tulevate juhtmete külge. Mähi avatud juhtmed elektrilindiga, et vältida lühiseid ja puhtamat välimust.

9. samm: lõpetatud

Valmis!
Valmis!
Valmis!
Valmis!
Valmis!
Valmis!
Valmis!
Valmis!

Koodi käivitamiseks määrake oma lähtekohaks kindlasti ~/.profile ja cd.

10. toiming: lisad (fotod)

Soovitan: