Мазмұны:

Тікелей нысанды анықтауды қолданатын трафик үлгісі анализаторы: 11 қадам (суреттермен)
Тікелей нысанды анықтауды қолданатын трафик үлгісі анализаторы: 11 қадам (суреттермен)

Бейне: Тікелей нысанды анықтауды қолданатын трафик үлгісі анализаторы: 11 қадам (суреттермен)

Бейне: Тікелей нысанды анықтауды қолданатын трафик үлгісі анализаторы: 11 қадам (суреттермен)
Бейне: Google Colab - Interactive Graphs, Tables and Widgets! 2024, Қараша
Anonim
Image
Image
Тікелей нысанды анықтауды қолданатын трафик үлгісі анализаторы
Тікелей нысанды анықтауды қолданатын трафик үлгісі анализаторы

Қазіргі әлемде бағдаршам қауіпсіз жол үшін қажет. Алайда, көп жағдайда бағдаршам біреу қызылға айналған кезде жарыққа жақындағанда тітіркендіреді. Бұл уақытты ысырап етеді, әсіресе егер жарық бір көліктің жолда басқа ешкім жоқ кезде жол қиылысынан өтуіне кедергі келтірсе. Менің жаңашылдық - бұл ақылды бағдаршам, ол әр жолдағы автокөліктердің санын санау үшін камерадан тірі нысанды анықтауды қолданады. Бұл жобада мен қолданатын жабдық - Raspberry Pi 3, камера модулі және жарықтың өзіне арналған түрлі электронды жабдық. Raspberry Pi -де OpenCV көмегімен жиналған ақпарат светодиоды GPIO арқылы басқаратын код арқылы орындалады. Бұл сандарға байланысты бағдаршам өзгереді, бұл көліктерді ең оңтайлы тәртіпте өткізуге мүмкіндік береді. Бұл жағдайда ең көп автокөлік бар жолақ өтетін болады, осылайша аз көлігі бар жол бос қалады, бұл ауаның ластануын азайтады. Бұл қиылысатын жолда автокөліктер жоқ кезде көптеген көліктер тоқтап қалатын жағдайларды жояды. Бұл барлығына уақытты үнемдеп қана қоймай, қоршаған ортаны үнемдейді. Қозғалтқыштың бос тұруы кезінде адамдарды тоқтату белгісі ауаның ластану мөлшерін арттырады, сондықтан ақылды бағдаршам жасау арқылы мен көліктерді көлікті тоқтата тұруға мүмкіндігінше аз уақыт жұмсайтындай етіп жарық үлгілерін оңтайландыра аламын.. Ақыр соңында, бұл бағдаршам жүйесі қалаларда, қала маңында немесе тіпті ауылдық жерлерде енгізілуі мүмкін, бұл адамдар үшін ауаның ластануын азайтады.

1 -қадам: бөлшектер тізімі

Материалдар:

Raspberry Pi 3 моделі B v1.2

Raspberry Pi камерасы v2.1

5В/1А шағын USB қуат көзі

HDMI мониторы, пернетақта, Raspbian Jessie бар SD картасы

Raspberry Pi GPIO ажырату кабелі

Қызыл, сары, жасыл жарық диодтары (әр түстен 2)

Raspberry Pi үшін аналық қосқыштар (7 ерекше түс)

Әр түрлі 24 калибрлі сым (түрлі түсті) + жылуды төмендететін құбыр

2'x2 'ағаш панель немесе платформа

Ағаш бұрандалар

Қара бет (картон, көбік тақтасы, плакат тақтасы және т.

Жол белгілеріне арналған ақ (немесе қара түстен басқа түс) таспа

Қара спрей бояуы (ПВХ үшін)

½”90 градус шынтақ буындары бар ПВХ құбыры (2), Т ұясы (1), әйел адаптері (2)

Құралдар

Пісіру темірі

3D принтері

Әр түрлі бұрғылағыштармен бұрғылау

Нан тақтасы

Жылу мылтығы

2 -қадам: Raspberry Pi орнату

SD картасын Raspberry Pi -ге салыңыз және жүктеңіз.

Қажетті OpenCV кітапханаларын орнату үшін осы нұсқаулықты орындаңыз. Бұл қадамды орындауға уақыт бар екеніне көз жеткізіңіз, себебі OpenCV кітапханасын орнату бірнеше сағатқа созылуы мүмкін. Камераны осында орнатып, орнатуды ұмытпаңыз.

Сондай -ақ, pip орнату керек:

пикамера

gpiozero

RPi. GPIO

Міне, түпкілікті код:

picamera.array импорттау PiRGBArray

пикамерадан PiCamera импорты

picamera.array импорттау

numpy санын np ретінде импорттаңыз

импорт уақыты

cv2 импорттау

GPO ретінде RPi. GPIO импорттау

импорт уақыты

GPIO.setmode (GPIO. BCM)

i үшін (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

шикі = PiRGBArray (камера, өлшемі = (480, 480))

уақыт.ұйқы (0.1)

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

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

initvert = 0

inithoriz = 0

санауыш = 0

cam.capture_continuous ішіндегі кадр үшін (шикі, формат = «bgr», use_video_port = True):

жақтау = кадр. массив

hsv = cv2.cvtColor (кадр, cv2. COLOR_BGR2HSV)

маска = cv2.inRange (hsv, colorLower, colorUpper)

маска = cv2.blur (маска, (3, 3))

маска = cv2.dilate (маска, Жоқ, қайталау = 5)

маска = cv2.erode (маска, Жоқ, қайталау = 1)

маска = cv2.dilate (маска, Жоқ, қайталау = 3)

мен, thresh = cv2.threshold (маска, 127, 255, cv2. THRESH_BINARY)

cnts = cv2.findContours (басу, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]

орталығы = Жоқ

шыңы = 0

көкжиек = 0

егер len (cnts)> 0:

cnts үшін c үшін:

(x, y), радиус = cv2.minEnclosingCircle (c)

орталығы = (int (x), int (y))

радиус = int (радиус)

cv2. шеңбер (жақтау, орталық, радиус, (0, 255, 0), 2)

x = int (x)

y = int (y)

егер 180 <x <300:

егер y> 300 болса:

vert = vert +1

элиф y <180:

vert = vert +1

басқа:

шыңы = шыңы

егер 180 <y <300:

егер x> 300 болса:

көкжиек = көкжиек +1

elif x <180:

көкжиек = көкжиек +1

басқа:

көкжиек = көкжиек

егер vert! = initvert:

басып шығару «Көліктер тік жолақта:» + str (төбе)

initvert = vert

басып шығару «Көліктер көлденең жолақта:» + str (горизонт)

inithoriz = көкжиек

басып шығару ---------------------------- '

егер көкжиек! = инториз:

басып шығару «Көліктер тік жолақта:» + str (төбе)

initvert = vert

басып шығару «Көліктер көлденең жолақта:» + str (горизонт)

inithoriz = көкжиек

басып шығару '----------------------------'

егер вертикаль <горизонт:

GPIO. шығысы (23, GPIO. HIGH)

GPIO. шығысы (21, GPIO. HIGH)

GPIO. шығысы (16, GPIO. LOW)

GPIO. шығысы (25, GPIO. LOW)

егер көкжиек <төбе:

GPIO. шығысы (16, GPIO. HIGH)

GPIO. шығысы (25, GPIO. HIGH)

GPIO. шығысы (23, GPIO. LOW)

GPIO. шығысы (21, GPIO. LOW)

cv2.imshow («Фрейм», кадр)

cv2.imshow («HSV», hsv)

cv2.imshow («Басу», бастыру)

raw.truncate (0)

егер cv2.waitKey (1) & 0xFF == ord ('q'):

үзіліс

cv2.destroyAllWindows ()

GPIO.cleanup ()

3 -қадам: Raspberry Pi және камералық қондырғы

Raspberry Pi және камералық қондырғы
Raspberry Pi және камералық қондырғы
Raspberry Pi және камералық қондырғы
Raspberry Pi және камералық қондырғы
Raspberry Pi және камералық қондырғы
Raspberry Pi және камералық қондырғы
Raspberry Pi және камералық қондырғы
Raspberry Pi және камералық қондырғы

Корпусты және камераны 3D басып шығарыңыз және жинаңыз.

4 -қадам: Бағдаршам құрастыру

Бағдаршам құрастыру
Бағдаршам құрастыру
Бағдаршам құрастыру
Бағдаршам құрастыру
Бағдаршам құрастыру
Бағдаршам құрастыру

Бағдаршамды тақтайша арқылы тексеріңіз. Светодиодтардың әр қарама -қарсы жиынтығы анодпен, ал олардың барлығы ортақ катодпен (жермен) бөліседі. Барлығы 7 кіріс сымы болуы керек: 1 светодиодтың әр жұбы үшін 1 (6) + 1 жерге қосу сымы. Бағдаршамдарды дәнекерлеңіз және жинаңыз.

5 -қадам: Сымдар (1 -бөлім)

Сымдар (1 -бөлім)
Сымдар (1 -бөлім)
Сымдар (1 -бөлім)
Сымдар (1 -бөлім)
Сымдар (1 -бөлім)
Сымдар (1 -бөлім)
Сымдар (1 -бөлім)
Сымдар (1 -бөлім)

Әйел бағанасы шамамен 5 фут сымға дәнекерлейді. Бұл сымдар кейінірек ПВХ құбырлары арқылы өтеді. Әр түрлі шамдар жиынтығын ажырата алатындығыңызға сенімді болыңыз (2 x 3 түс және 1 жер). Бұл жағдайда мен тағы бір қызыл, сары және көк сымдардың ұштарын өткірмен белгіледім, сондықтан олардың қайсысы екенін білемін.

6 -қадам: Қоршаған ортаны құру

Қоршаған ортаны құру
Қоршаған ортаны құру
Қоршаған ортаны құру
Қоршаған ортаны құру
Қоршаған ортаны құру
Қоршаған ортаны құру
Қоршаған ортаны құру
Қоршаған ортаны құру

Қоршаған ортаны құру 2 футтық шаршы ағаш палетаны осылай жасаңыз. Ағаш сынықтары жақсы, себебі ол жабылады. Адаптерге сәйкес келетін тесікті бұрғылаңыз. ПВХ құбырын бекіту үшін паллеттің бүйірлерінен бұрандаларды бұраңыз. Қара көбік тақтасын астындағы ағаш паллетке сәйкес етіп кесіңіз. ПВХ құбырының айналасына сәйкес келетін тесікті бұрғылаңыз. Қарсы бұрышта қайталаңыз. Жолдарды ақ таспамен белгілеңіз.

7 -қадам: ПВХ жақтауын аяқтау

ПВХ жақтауын аяқтау
ПВХ жақтауын аяқтау
ПВХ жақтауын аяқтау
ПВХ жақтауын аяқтау
ПВХ жақтауын аяқтау
ПВХ жақтауын аяқтау

Жоғарғы құбырда сым байламына сәйкес келетін тесік бұрғылаңыз. Егер сіз құбырлардың ішкі жағына кіре алсаңыз, өрескел тесік жақсы. Сымдарды сынау үшін ПВХ құбырлары мен шынтақ буындары арқылы өткізіңіз. Барлығы аяқталғаннан кейін, негізгі жақтаудың көрінісін тазарту үшін ПВХ -ны қара бүріккіш бояумен бояңыз. ПВХ құбырларының бірінде Т-түйіспесін бекіту үшін кішкене саңылауды кесіңіз. Бағдаршамның ілініп қалуы үшін осы түйіспеге ПВХ құбырын қосыңыз. Диаметрі негізгі жақтаумен бірдей болуы мүмкін (1/2 дюйм), бірақ егер сіз жұқа құбырды қолдансаңыз, 7 сымның өтетініне көз жеткізіңіз. Бағдаршам ілінуі үшін осы құбыр арқылы тесік жасаңыз.

8 -қадам: Сымдар (2 -бөлім)

Сымдар (2 -бөлім)
Сымдар (2 -бөлім)
Сымдар (2 -бөлім)
Сымдар (2 -бөлім)
Сымдар (2 -бөлім)
Сымдар (2 -бөлім)

Бәрін бұрын тексерілгендей қайта қосыңыз. Бағдаршам мен сымдарды тақта арқылы екі рет тексеріп, барлық қосылулардың орындалғанын растаңыз. Бағдаршамды Т-түйіспесі арқылы келетін сымдарға дәнекерлеңіз. Ашық сымдарды электр таспасымен орап, қысқа болуға жол бермеу үшін және таза көрініс үшін.

9 -қадам: Аяқталды

Аяқталды!
Аяқталды!
Аяқталды!
Аяқталды!
Аяқталды!
Аяқталды!
Аяқталды!
Аяқталды!

Кодты іске қосу үшін көзді ~/.profile және cd ретінде жобаның орнына орнатыңыз.

10 -қадам: Қосымша (фотосуреттер)

Ұсынылған: