Mundarija:

Trafik namunasi analizatori jonli ob'ektni aniqlash yordamida: 11 qadam (rasmlar bilan)
Trafik namunasi analizatori jonli ob'ektni aniqlash yordamida: 11 qadam (rasmlar bilan)

Video: Trafik namunasi analizatori jonli ob'ektni aniqlash yordamida: 11 qadam (rasmlar bilan)

Video: Trafik namunasi analizatori jonli ob'ektni aniqlash yordamida: 11 qadam (rasmlar bilan)
Video: Провести 2 дня на единственном в мире необитаемом острове "Кроличий остров"|JAPAN TRAVEL 2024, Noyabr
Anonim
Image
Image
Trafik namunalari analizatori jonli ob'ektni aniqlashdan foydalanadi
Trafik namunalari analizatori jonli ob'ektni aniqlashdan foydalanadi

Zamonaviy dunyoda svetoforlar xavfsiz yo'l uchun zarur. Biroq, ko'p hollarda, svetoforlar, xuddi qizil yonayotgan paytda, kimdir chiroqqa yaqinlashganda, bezovta qilishi mumkin. Bu vaqtni behuda sarflaydi, ayniqsa, yorug'lik yo'lda boshqa hech kim bo'lmaganida, bitta avtomobilning chorrahadan o'tishiga to'sqinlik qilsa. Mening yangilikim - bu aqlli svetofor, har bir yo'ldagi mashinalar sonini hisoblash uchun kameradan ob'ektni jonli aniqlashni ishlatadi. Men bu loyihada ishlatadigan uskuna - Raspberry Pi 3, kamera moduli va yorug'likning o'zi uchun turli xil elektron uskunalar. Raspberry Pi -da OpenCV -dan foydalanib, to'plangan ma'lumotlar LEDlarni GPIO orqali boshqaradigan kod orqali ishlaydi. Bu raqamlarga qarab, svetofor o'zgaradi, bunda avtomobillar eng maqbul tartibda o'tadi. Bu holda, eng ko'p mashinalar bo'lagi o'tkaziladi, shunda kamroq mashinalar bo'lagi bo'sh qoladi, bu esa havoning ifloslanishini kamaytiradi. Bu yo'l kesishgan yo'lda mashinalar bo'lmaganida ko'plab mashinalar to'xtab qolishi holatlarini bartaraf etadi. Bu nafaqat hamma uchun vaqtni tejaydi, balki atrof -muhitni ham tejaydi. Dvigatel ishlamay turib, to'xtash belgisida odamlarni to'xtatish vaqti havoning ifloslanishini ko'paytiradi, shuning uchun aqlli svetofor yordamida men yorug'lik naqshlarini optimallashtira olaman, shunda mashinalar to'xtab qolishi bilan mashinalar imkon qadar kamroq vaqt sarflaydilar.. Oxir -oqibat, bu svetofor tizimi shaharlarda, shahar atrofi yoki hatto qishloq joylarida amalga oshirilishi mumkin, chunki odamlar havoning ifloslanishini kamaytiradi.

1 -qadam: qismlar ro'yxati

Materiallar:

Raspberry Pi 3 Model B v1.2

Raspberry Pi kamera v2.1

5V/1A mikro USB quvvat manbai

HDMI monitor, klaviatura, sichqoncha SD kartasi Raspbian Jessie bilan

Raspberry Pi GPIO uzilish kabeli

Qizil, sariq, yashil LEDlar (har bir rangdan 2 tadan)

Raspberry Pi uchun ayol ulagichlar (7 ta noyob rang)

Har xil o'lchamdagi 24 simli (har xil rangdagi) + issiqlik o'tkazmaydigan quvur

2'x2 yog'och paneli yoki platformasi

Yog'och vintlardek

Qora sirt (karton, ko'pikli karton, plakat taxtasi va boshqalar)

Yo'l belgilari uchun oq (yoki qora rangdan boshqa har qanday rang) lenta

Qora purkagichli bo'yoq (PVX uchun)

½”90 darajali tirsak bo'g'imlari bo'lgan PVX quvur (2), T soket (1), ayol adapter (2)

Asboblar

Lehimlash temir

3D printer

Har xil matkaplar yordamida burg'ulash

Non paneli

Issiq qurol

2 -qadam: Raspberry Pi -ni sozlash

SD -kartani Raspberry Pi -ga joylashtiring va ishga tushiring.

OpenCV kutubxonalarini o'rnatish uchun ushbu qo'llanmani bajaring. Bu qadamni bajarishga vaqtingiz borligiga ishonch hosil qiling, chunki OpenCV kutubxonasini o'rnatish bir necha soat davom etishi mumkin. Kamerangizni shu erga o'rnatib, sozlaganingizga ishonch hosil qiling.

Shuningdek, pip o'rnatish kerak:

pikamera

gpiozero

RPi. GPIO

Mana yakuniy kod:

picamera.array import PiRGBArray

pikameradan PiCamera import qilinadi

picamera.array -ni import qilish

numpy ni np sifatida import qilish

import vaqti

cv2 import qilish

RPi. GPIO -ni GPIO sifatida import qilish

import vaqti

GPIO.setmode (GPIO. BCM)

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

GPIO.setup (i, GPIO. OUT)

kamera = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

xom = PiRGBArray (kam, o'lcham = (480, 480))

uyqu (0.1)

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

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

initvert = 0

inithoriz = 0

hisoblagich = 0

cam.capture_continuous ichida ramka uchun (raw, format = "bgr", use_video_port = True):

ramka = ramka. qator

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

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

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

niqob = cv2.dilate (niqob, Yo'q, takrorlash = 5)

niqob = cv2.erode (niqob, Yo'q, takrorlash = 1)

niqob = cv2.dilate (niqob, Yo'q, takrorlash = 3)

men, thres = cv2.threshold (niqob, 127, 255, cv2. THRESH_BINARY)

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

markazi = Yo'q

vert = 0

ufq = 0

agar len (cnts)> 0:

cnts uchun c:

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

markazi = (int (x), int (y))

radius = int (radius)

cv2. doira (ramka, markaz, radius, (0, 255, 0), 2)

x = int (x)

y = int (y)

agar 180 <x <300:

agar y> 300 bo'lsa:

vert = vert +1

elif y <180:

vert = vert +1

boshqa:

vertikal = vertikal

agar 180 <y <300:

agar x> 300 bo'lsa:

ufq = ufq +1

elif x <180:

ufq = ufq +1

boshqa:

ufq = ufq

agar vert! = initvert:

"Vertikal chiziqdagi mashinalar:" + str (tepa) ni chop eting.

initvert = vert

"Avtomobillar gorizontal chiziqda:" + str (ufq) chop eting

inithoriz = ufq

chop etish '----------------------------'

agar ufq! = inithoriz:

"Vertikal chiziqdagi mashinalar:" + str (tepa) ni chop eting.

initvert = vert

"Avtomobillar gorizontal chiziqda:" + str (ufq) chop eting

inithoriz = ufq

chop etish '----------------------------'

agar vert <ufq:

GPIO.output (23, GPIO. HIGH)

GPIO. chiqish (21, GPIO. HIGH)

GPIO.output (16, GPIO. LOW)

GPIO.output (25, GPIO. LOW)

agar ufq <vert:

GPIO. chiqish (16, GPIO. HIGH)

GPIO. chiqish (25, GPIO. HIGH)

GPIO.output (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow ("Ramka", ramka)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Xirmon", maydalash)

xom.qisqartirish (0)

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

tanaffus

cv2.destroyAllWindows ()

GPIO.cleanup ()

3 -qadam: Raspberry Pi va kamera tog'i

Raspberry Pi va kamera tog'i
Raspberry Pi va kamera tog'i
Raspberry Pi va kamera tog'i
Raspberry Pi va kamera tog'i
Raspberry Pi va kamera tog'i
Raspberry Pi va kamera tog'i
Raspberry Pi va kamera tog'i
Raspberry Pi va kamera tog'i

Koson va kamerani 3D bosib chiqarish va yig'ish.

4 -qadam: Svetoforni yig'ish

Svetoforni yig'ish
Svetoforni yig'ish
Svetoforni yig'ish
Svetoforni yig'ish
Svetoforni yig'ish
Svetoforni yig'ish

Svetoforni taxta paneli bilan sinab ko'ring. LEDlarning har bir qarama -qarshi to'plami anodga ega va ularning hammasi umumiy katodga (erga) ega. Hammasi bo'lib 7 ta kirish simlari bo'lishi kerak: har bir LED (6) + 1 ta topraklama simlari uchun 1 ta. Svetoforni lehimlang va yig'ing.

5 -qadam: simlarni ulash (1 -qism)

Bolal (1 -qism)
Bolal (1 -qism)
Bolal (1 -qism)
Bolal (1 -qism)
Bolal (1 -qism)
Bolal (1 -qism)
Bolal (1 -qism)
Bolal (1 -qism)

Ayol sarlavhasi pinlarini taxminan 5 futli simga lehimlang. Bu tomonlar, bu simlar keyinchalik PVX quvurlar orqali o'tib ketadi. Turli xil chiroqlar to'plamini (2 x 3 rang va 1 tuproq) farqlay olishingizga ishonch hosil qiling. Bu holda, men boshqa qizil, sariq va ko'k simlarning uchlarini sharf bilan belgiladim, shuning uchun qaysi biri ekanligini bilaman.

6 -qadam: Atrof -muhitni yaratish

Atrof -muhitni qurish
Atrof -muhitni qurish
Atrof -muhitni qurish
Atrof -muhitni qurish
Atrof -muhitni qurish
Atrof -muhitni qurish
Atrof -muhitni qurish
Atrof -muhitni qurish

Atrof -muhitni yaratish 2 metrli kvadrat yog'ochdan yasalgan sxemasidan shunday yasang. Yog'och qoldiqlari yaxshi, chunki u yopiladi. Adapterga mos keladigan teshikni burang. PVX trubkani mahkamlash uchun sxemasidan yon tomonlari orqali burg'ulash vintlarini burang. Qora ko'pikli taxtani kesib oling, uning ostidagi yog'och sxemasidan. PVX quvur atrofiga mos keladigan teshikni burang. Qarama -qarshi burchakda takrorlang. Yo'llarni oq lenta bilan belgilang.

7 -qadam: PVX ramkani yakunlash

PVX ramkani yakunlash
PVX ramkani yakunlash
PVX ramkani yakunlash
PVX ramkani yakunlash
PVX ramkani yakunlash
PVX ramkani yakunlash

Yuqori trubkada simlar to'plamiga mos keladigan teshikni burang. Quvurlarning ichki qismiga kira olsangiz, qo'pol teshik yaxshi. Sinash uchun simlarni PVX quvurlar va tirsak bo'g'imlari orqali o'tkazing. Hammasi tugagandan so'ng, asosiy ramkaning ko'rinishini tozalash uchun PVXni qora bo'yoq bilan bo'yash. PVX quvurlaridan birida T-bo'g'iniga mos keladigan kichik bo'shliqni kesib oling. Svetofor osib qo'yilishi uchun bu t-birikmasiga PVX quvur qo'shing. Diametri asosiy ramka bilan bir xil bo'lishi mumkin (1/2 dyuym), lekin agar siz yupqaroq trubadan foydalansangiz, 7 ta sim o'tishi mumkinligiga ishonch hosil qiling.

8 -qadam: simlarni ulash (2 -qism)

Bolal (2 -qism)
Bolal (2 -qism)
Bolal (2 -qism)
Bolal (2 -qism)
Bolal (2 -qism)
Bolal (2 -qism)

Oldindan sinovdan o'tganidek, hamma narsani qayta ulang. Barcha ulanishlar amalga oshirilganligini tasdiqlash uchun svetofor va simlarni taxtali bilan ikki marta tekshiring. Svetoforni T-qo'shma qo'l orqali keladigan simlarga lehimlang. Qisqa ko'rinmaslik va toza ko'rinish uchun ochiq simlarni elektr tasmasi bilan o'rab oling.

9 -qadam: Bajarildi

Bajarildi!
Bajarildi!
Bajarildi!
Bajarildi!
Bajarildi!
Bajarildi!
Bajarildi!
Bajarildi!

Kodni ishga tushirish uchun, manbaingizni ~/.profile va CD ni loyiha joylashuviga o'rnatganingizga ishonch hosil qiling.

10 -qadam: Qo'shimchalar (rasmlar)

Tavsiya: