- Компоненте потребне
- Инсталирање ОпенЦВ-а у Распберри Пи
- Инсталирање осталих потребних пакета
- Програмирање Распберри Пи
- Тестирање система за откривање поспаности возача
Возачи камиона који превозе терет и тешке материјале на велике удаљености током дана и ноћи, често пате од недостатка сна. умор и поспаност су неки од водећих узрока великих несрећа на аутопутевима. Аутомобилска индустрија ради на неким технологијама које могу открити поспаност и упозорити возача о томе.
У овом пројекту ћемо изградити систем за очитавање и упозоравање у сну за управљачке програме који користе Распберри Пи, ОпенЦВ и Пи модул камере. Основна сврха овог система је праћење стања лица и покрета очију возача, а ако се возач осећа поспано, систем ће покренути поруку упозорења. Ово је продужетак наше претходне апликације за препознавање оријентира на лицу и препознавање лица.
Компоненте потребне
Хардверске компоненте
- Распберри Пи 3
- Модул камере Пи
- Микро УСБ кабл
- Зујалица
Софтвер и услуге на мрежи
- ОпенЦВ
- Длиб
- Питхон3
Пре него што наставимо са овим пројектом откривања поспаности возача , прво морамо да инсталирамо ОпенЦВ, имутилс, длиб, Нумпи и неке друге зависности у овом пројекту. ОпенЦВ се овде користи за дигиталну обраду слике. Најчешћа примена дигиталне обраде слика су откривање предмета, препознавање лица и бројач људи.
Овде користимо само Распберри Пи, Пи камеру и зујалицу за изградњу овог система за откривање спавања.
Инсталирање ОпенЦВ-а у Распберри Пи
Пре инсталирања ОпенЦВ-а и других зависности, Распберри Пи мора бити у потпуности ажуриран. Користите наредбе у наставку да бисте ажурирали Распберри Пи на најновију верзију:
судо апт-гет упдате
Затим користите следеће наредбе за инсталирање потребних зависности за инсталирање ОпенЦВ-а на ваш Распберри Пи.
судо апт-гет инсталл либхдф5-дев -и судо апт-гет инсталл либхдф5-сериал-дев -и судо апт-гет инсталл либатлас-басе-дев -и судо апт-гет инсталл либјаспер-дев -и судо апт-гет инсталл либктгуи4 –И судо апт-гет инсталл либкт4-тест –и
На крају, инсталирајте ОпенЦВ на Распберри Пи користећи наредбе у наставку.
пип3 инсталирај опенцв-цонтриб-питхон == 4.1.0.25
Ако сте нови у ОпенЦВ-у, погледајте наше претходне водиче за ОпенЦВ са Распберри пи:
- Инсталирање ОпенЦВ-а на Распберри Пи помоћу ЦМаке-а
- Препознавање лица у стварном времену помоћу Распберри Пи и ОпенЦВ
- Препознавање регистарске таблице помоћу Распберри Пи и ОпенЦВ
- Процена величине гужве помоћу ОпенЦВ-а и Распберри Пи-а
Такође смо креирали серију водича за ОпенЦВ почевши од почетничког нивоа.
Инсталирање осталих потребних пакета
Пре програмирања Распберри Пи за детектор поспаности, хајде да инсталирамо остале потребне пакете.
Инсталирање длиб: длиб је савремени скуп алата који садржи алгоритме машинског учења и алате за проблеме из стварног света. Користите доњу команду да бисте инсталирали длиб.
пип3 инсталирај длиб
Инсталирање НумПи: НумПи је основна библиотека за научно рачунање која садржи моћан објект н-димензионалног низа, пружа алате за интеграцију Ц, Ц ++ итд.
пип3 инсталирај нумпи
Инсталирање модула фаце_рецогнитион: Ова библиотека се користи за препознавање и манипулисање лицима из Питхона или командне линије. Користите наредбу испод да бисте инсталирали библиотеку за препознавање лица.
Пип3 инсталирајте препознавање лица
И на крају, инсталирајте библиотеку еие_гаме помоћу наредбе у наставку:
пип3 инсталирај игрицу за очи
Програмирање Распберри Пи
Комплетни код за детектор поспаности возача који користи ОпенЦВ дат је на крају странице. Овде објашњавамо неке важне делове кода ради бољег разумевања.
Дакле, као и обично, започните код укључивањем свих потребних библиотека.
импорт фаце_рецогнитион импорт цв2 импорт нумпи ас нп импорт тиме импорт цв2 импорт РПи.ГПИО као ГПИО импорт еие_гаме
Након тога, креирајте инстанцу за добијање видео фида са пи камере. Ако користите више камера, замените нулу једном у функцији цв2.ВидеоЦаптуре (0) .
видео_цаптуре = цв2.ВидеоЦаптуре (0)
Сада у следеће редове унесите име датотеке и путању датотеке. У мом случају и код и датотека се налазе у истој фасцикли. Затим помоћу кодирања лица добијете локацију лица на слици.
имг_имаге = фаце_рецогнитион.лоад_имаге_филе ("имг.јпг") имг_фаце_енцодинг = фаце_рецогнитион.фаце_енцодингс (имг_имаге)
Након тога креирајте два низа да бисте сачували лица и њихова имена. Користим само једну слику; у код можете додати још слика и њихове путање.
кновн_фаце_енцодингс = кновн_фаце_намес =
Затим створите неке променљиве за чување локација делова лица, имена лица и кодирања.
фаце_лоцатионс = фаце_енцодингс = намес_намес = процесс_тхис_фраме = Тачно
Унутар вхиле функцији, хватање видео оквири са стреаминг и величину оквире за мању величину и претворити снимљену оквир за РГБ боју за препознавање лица.
рет, фраме = видео_цаптуре.реад () смалл_фраме = цв2.ресизе (фраме, (0, 0), фк = 0.25, фи = 0.25) ргб_смалл_фраме = смалл_фраме
Након тога покрените поступак препознавања лица да бисте упоредили лица на видео снимку са сликом. Такође добити локације делова лица.
ако процесс_тхис_фраме: фаце_лоцатионс = фаце_рецогнитион.фаце_лоцатионс (ргб_смалл_фраме) фаце_енцодингс = фаце_рецогнитион.фаце_енцодингс (ргб_смалл_фраме, фаце_лоцатионс) цв2.имврите (датотека, мали_оквир)
Ако се препознато лице подудара са лицем на слици, позовите функцију очне игре да бисте пратили покрете ока. Код ће више пута пратити положај ока и очне јабучице.
фаце_дистанцес = фаце_рецогнитион.фаце_дистанце (кновн_фаце_енцодингс, фаце_енцодинг) бест_матцх_индек = нп.аргмин (фаце_дистанцес) ако се подудара: наме = кновн_фаце_намес дирецтион = еие_гаме.гет_еиебалл_дирецтион (филе) принт (дирецтион)
Ако код не препозна ниједно кретање ока током 10 секунди, тада ће активирати аларм да пробуди особу.
елсе: цоунт = 1 + цоунт принт (цоунт) иф (цоунт> = 10): ГПИО.оутпут (БУЗЗЕР, ГПИО.ХИГХ) тиме.слееп (2) ГПИО.оутпут (БУЗЗЕР, ГПИО.ЛОВ) принт ("Алерт! ! Упозорење !! Откривена поспаност возача ")
Затим помоћу ОпенЦВ функција нацртајте правоугаоник око лица и ставите текст на њега. Такође, прикажите видео оквире помоћу функције цв2.имсхов .
цв2.рецтангле (оквир, (лево, горе), (десно, доле), (0, 255, 0), 2) цв2.рецтангле (оквир, (лево, доле - 35), (десно, доле), (0, 255, 0), цв2.ФИЛЛЕД) фонт = цв2.ФОНТ_ХЕРСХЕИ_ДУПЛЕКС цв2.путТект (оквир, име, (лево + 6, дно - 6), фонт, 1.0, (0, 0, 255), 1) цв2.имсхов ('Видео', кадар) Поставите тастер 'С' да зауставите код. ако је цв2.ваитКеи (1) & 0кФФ == орд ('с'): прекид
Тестирање система за откривање поспаности возача
Када је код спреман, повежите Пи камеру и зујалицу са Распберри Пи и покрените код. Након приближно 10 секунди, појавиће се прозор са стримингом уживо са ваше Распберри Пи камере. Када уређај препозна лице, одштампаће ваше име на оквиру и почети да прати кретање очију. Затворите очи на 7 до 8 секунди да бисте тестирали аларм. Када бројање постане веће од 10, активираће се аларм који ће вас упозорити на ситуацију.
На овај начин можете да направите детектор поспаности помоћу ОпенЦВ-а и Распберри Пи-а. Померите се надоле за радни видео и код.