Mündəricat:

Canlı Obyekt Algılamasından istifadə edən Trafik Nümunəsi Analizatoru: 11 Addım (Şəkillərlə)
Canlı Obyekt Algılamasından istifadə edən Trafik Nümunəsi Analizatoru: 11 Addım (Şəkillərlə)

Video: Canlı Obyekt Algılamasından istifadə edən Trafik Nümunəsi Analizatoru: 11 Addım (Şəkillərlə)

Video: Canlı Obyekt Algılamasından istifadə edən Trafik Nümunəsi Analizatoru: 11 Addım (Şəkillərlə)
Video: Trí tuệ bừng sáng khi tỏ ngộ: NHƯ LAI TÀNG là bản thể chơn như của vạn pháp. THỦ LĂNG NGHIÊM KINH T2 2024, Noyabr
Anonim
Image
Image
Canlı Obyekt Algılamasından istifadə edən Trafik Nümunəsi Analizatoru
Canlı Obyekt Algılamasından istifadə edən Trafik Nümunəsi Analizatoru

İndiki dünyada təhlükəsiz yol üçün işıqforlar vacibdir. Ancaq bir çox hallarda işığın qırmızıya döndüyü kimi işığa yaxınlaşdığı hallarda işıqforlar sinir bozucu ola bilər. Xüsusilə işıq, yolda başqa heç kim olmadığı zaman kəsişmədən keçməyini maneə törədirsə, bu vaxt itkisinə səbəb olur. Yeniliyim, hər yoldakı avtomobillərin sayını hesablamaq üçün kameradan canlı obyekt algılamadan istifadə edən ağıllı bir işıqfordur. Bu layihə üçün istifadə edəcəyim aparat bir Raspberry Pi 3, kamera modulu və işığın özü üçün müxtəlif elektron avadanlıqlardır. Raspberry Pi -də OpenCV istifadə edərək, toplanan məlumatlar LED -ləri GPIO vasitəsilə idarə edən kod vasitəsilə işlədiləcək. Bu rəqəmlərdən asılı olaraq, işıqfor dəyişəcək və avtomobilləri ən optimal qaydada keçir. Bu vəziyyətdə, ən çox avtomobili olan zolaq buraxılacaq ki, daha az avtomobili olan zolaq boş qalacaq və hava çirkliliyini azaldacaq. Bu, bir çox avtomobilin kəsişən yolda maşın olmadığı halda dayandırılması hallarını aradan qaldıracaq. Bu, hər kəs üçün vaxta qənaət etməklə yanaşı, ətraf mühitə də qənaət edir. Mühərrikin rölantidə olması ilə insanların dayanma işarəsində dayanma müddəti hava çirkliliyinin miqdarını artırır, buna görə də ağıllı bir işıqfor yaradaraq, işıq modellərini optimallaşdıra bilirəm ki, maşınlar avtomobillərini dayandıraraq mümkün olan ən az vaxt sərf etsinlər.. Nəhayət, bu svetofor sistemi şəhərlərdə, şəhərətrafı ərazilərdə və ya hətta kənd yerlərində tətbiq oluna bilər ki, insanlar üçün daha səmərəli olsun, hava çirkliliyini azaltsın.

Addım 1: Parça siyahısı

Materiallar:

Raspberry Pi 3 Model B v1.2

Raspberry Pi Kamera v2.1

5V/1A mikro USB enerji təchizatı

HDMI monitor, klaviatura, Raspbian Jessie ilə siçan SD kartı

Raspberry Pi GPIO qırılma kabeli

Qırmızı, sarı, yaşıl LEDlər (hər rəngdən 2 ədəd)

Raspberry Pi üçün qadın konnektorlar (7 unikal rəng)

Müxtəlif rəngli 24 tel (fərqli rənglər) + istilik büzücü borular

2'x2 'taxta panel və ya platforma

Taxta vintlər

Qara səth (karton, köpük lövhəsi, afişa lövhəsi və s.)

Yol nişanları üçün ağ (və ya qara rəngdən başqa hər hansı bir rəng) lent

Qara sprey boya (PVC üçün)

½”90 dərəcə dirsək birləşmələri olan PVC boru (2), T yuva (1), dişi adapter (2)

Alətlər

Lehimleme dəmir

3D printer

Müxtəlif qazma bitləri ilə qazma

Çörək lövhəsi

İstilik silahı

Addım 2: Raspberry Pi qurmaq

SD kartı Raspberry Pi -yə yükləyin və yükləyin.

Lazım olan OpenCV kitabxanalarını quraşdırmaq üçün bu təlimatı izləyin. OpenCV kitabxanasının quraşdırılması bir neçə saat çəkə biləcəyi üçün bu addımı atmağa vaxtınız olduğundan əmin olun. Kameranızı da bura quraşdırıb qurduğunuzdan əmin olun.

Ayrıca pip quraşdırmalısınız:

pikamera

gpiozero

RPi. GPIO

İşdə son kod:

picamera.array idxalından PiRGBArray

picamera idxalından PiCamera

picamera.array idxal edin

np kimi numpy idxal edin

idxal vaxtı

idxal cv2

GPO olaraq RPi. GPIO idxal edin

idxal vaxtı

GPIO.setmode (GPIO. BCM)

i üçün (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

xam = PiRGBArray (cam, ölçü = (480, 480))

vaxt.yuxu (0.1)

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

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

başlanğıc = 0

inithoriz = 0

sayğac = 0

cam.capture_continuousdakı çərçivə üçün (raw, format = "bgr", use_video_port = True):

çərçivə = çərçivə.array

hsv = cv2.cvtColor (çərçivə, cv2. COLOR_BGR2HSV)

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

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

maska = cv2.dilate (maska, Yox, təkrarlamalar = 5)

maska = cv2.erode (maska, Yox, təkrarlamalar = 1)

maska = cv2.dilate (maska, Yox, təkrarlamalar = 3)

me, thresh = cv2.threshold (maska, 127, 255, cv2. THRESH_BINARY)

cnts = cv2.findContours (xırda, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]

mərkəzi = Yoxdur

vert = 0

üfüq = 0

əgər len (cnts)> 0:

cnts -də c üçün:

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

mərkəz = (int (x), int (y))

radius = int (radius)

cv2.dairə (çərçivə, mərkəz, radius, (0, 255, 0), 2)

x = int (x)

y = int (y)

əgər 180 <x <300:

y> 300 olarsa:

vert = vert +1

elif y <180:

vert = vert +1

başqa:

vert = vert

əgər 180 <y <300:

x> 300 olarsa:

üfüq = üfüq +1

elif x <180:

üfüq = üfüq +1

başqa:

üfüq = üfüq

əgər vert! = initvert:

çap "Şaquli zolaqdakı avtomobillər:" + str (vert)

başlanğıc = vert

çap "Avtomobillər üfüqi zolaqda:" + str (üfüqdə)

inithoriz = üfüq

çap '----------------------------'

əgər üfüq! = inithoriz:

çap "Şaquli zolaqdakı avtomobillər:" + str (vert)

başlanğıc = vert

"Üfüqi zolaqdakı avtomobillər:" + str (üfüq)

inithoriz = üfüq

çap '----------------------------'

əgər vert <horiz:

GPIO.çıxış (23, GPIO. HIGH)

GPIO.çıxış (21, GPIO. HIGH)

GPIO.çıxış (16, GPIO. LOW)

GPIO.çıxış (25, GPIO. LOW)

üfüq <vert:

GPIO.çıxış (16, GPIO. HIGH)

GPIO.çıxış (25, GPIO. HIGH)

GPIO.çıxış (23, GPIO. LOW)

GPIO.çıxış (21, GPIO. LOW)

cv2.imshow ("Çərçivə", çərçivə)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Xırda", xırda)

xam.qırmaq (0)

əgər cv2.waitKey (1) & 0xFF == ord ('q'):

fasilə

cv2.destroyAllWindows ()

GPIO.cleanup ()

Addım 3: Raspberry Pi və Kamera Dağı

Raspberry Pi və Kamera Dağı
Raspberry Pi və Kamera Dağı
Raspberry Pi və Kamera Dağı
Raspberry Pi və Kamera Dağı
Raspberry Pi və Kamera Dağı
Raspberry Pi və Kamera Dağı
Raspberry Pi və Kamera Dağı
Raspberry Pi və Kamera Dağı

Çantanı və kameranı 3D çap edin və yığın.

Addım 4: Svetofor Quraşdırması

Svetofor Məclisi
Svetofor Məclisi
Svetofor Məclisi
Svetofor Məclisi
Svetofor Məclisi
Svetofor Məclisi

Trafik işığını çörək taxtası ilə sınayın. Hər bir LED dəsti bir anod bölüşdürür və hamısı ortaq bir katod (torpaq) bölüşür. Cəmi 7 giriş teli olmalıdır: hər cüt LED (6) + 1 torpaq tel. Trafik işıqlarını lehimləyin və yığın.

Addım 5: Kablolama (1 -ci hissə)

Kablolama (1 -ci hissə)
Kablolama (1 -ci hissə)
Kablolama (1 -ci hissə)
Kablolama (1 -ci hissə)
Kablolama (1 -ci hissə)
Kablolama (1 -ci hissə)
Kablolama (1 -ci hissə)
Kablolama (1 -ci hissə)

Dişi başlıq pinlərini təxminən 5 fut telə lehimləyin. Bu tellərin daha sonra PVC borulardan keçəcəyi tərəflərdir. Fərqli işıq dəstlərini (2 x 3 rəng və 1 torpaq) fərqləndirə bildiyinizə əmin olun. Bu vəziyyətdə, başqa bir qırmızı, sarı və mavi tellərin uclarını sharpie ilə qeyd etdim, buna görə hansının olduğunu bilirəm.

Addım 6: Ətraf mühitin qurulması

Ətraf mühitin qurulması
Ətraf mühitin qurulması
Ətraf mühitin qurulması
Ətraf mühitin qurulması
Ətraf mühitin qurulması
Ətraf mühitin qurulması
Ətraf mühitin qurulması
Ətraf mühitin qurulması

Ətraf mühitin qurulması 2 metrlik bir kvadrat taxta palet hazırlayın. Hurda taxta üstü örtüləcəyi üçün yaxşıdır. Adaptörünüzə uyğun olan bir çuxur qazın. PVC borunun yerinə sabitlənməsi üçün paletin yanlarından vintlər açın. Qara köpük lövhəsini altındakı taxta paletə uyğun olaraq kəsin. PVC borunun ətrafına uyğun bir çuxur qazın. Qarşı küncdə təkrarlayın. Yolları ağ lentlə işarələyin.

Addım 7: PVC Çərçivəni bitirmək

PVC Çərçivənin tamamlanması
PVC Çərçivənin tamamlanması
PVC Çərçivənin tamamlanması
PVC Çərçivənin tamamlanması
PVC Çərçivənin tamamlanması
PVC Çərçivənin tamamlanması

Üst boruda, bir dəstə telə sığa biləcək bir çuxur qazın. Boruların içərisinə girə biləcəyiniz müddətcə kobud bir çuxur yaxşıdır. Test üçün fitinqlər üçün PVC borulardan və dirsəklərdən keçin. Hər şey tamamlandıqda, əsas çərçivənin görünüşünü təmizləmək üçün PVC -ni bir az qara sprey boya ilə boyayın. PVC borulardan birində T-birləşməsinə uyğun olaraq kiçik bir boşluq kəsin. Trafik işığının asılması üçün bu t-birləşməsinə bir PVC boru əlavə edin. Diametri əsas çərçivə ilə eyni ola bilər (1/2 ), daha incə bir boru istifadə etsəniz, 7 telin keçə biləcəyinə əmin olun. Trafik işığının asılması üçün bu borudan bir delik açın.

Addım 8: Kablolama (2 -ci hissə)

Kablolama (2 -ci hissə)
Kablolama (2 -ci hissə)
Kablolama (2 -ci hissə)
Kablolama (2 -ci hissə)
Kablolama (2 -ci hissə)
Kablolama (2 -ci hissə)

Əvvəllər sınaqdan keçirildiyi kimi hər şeyi yenidən bağlayın. Bütün əlaqələrin qurulduğunu təsdiqləmək üçün trafik işığını və kabelləri bir çörək taxtası ilə iki dəfə yoxlayın. Trafik işığını T-qolu qolundan keçən tellərə lehimləyin. Açıq telləri elektrik şeridi ilə sarın ki, hər hansı bir şort yaranmasın və daha təmiz görünsün.

Addım 9: Bitdi

Bitdi!
Bitdi!
Bitdi!
Bitdi!
Bitdi!
Bitdi!
Bitdi!
Bitdi!

Kodu işə salmaq üçün mənbəyinizi ~/.profile və cd olaraq layihənizin yerinə qoyun.

Addım 10: Əlavələr (Şəkillər)

Tövsiyə: