Почели смо са учењем основа ОпенЦВ-а, а затим смо извршили неке основне обраде слика и манипулације сликама, праћене сегментацијом слика и многим другим операцијама користећи ОпенЦВ и језик питхон. Овде, у овом одељку, извешћемо неке једноставне технике откривања објеката помоћу подударања шаблона. Пронаћи ћемо предмет на слици, а затим ћемо описати његове особине. Карактеристике су уобичајени атрибути слике као што су углови, ивице итд. Такође ћемо погледати неке уобичајене и популарне алгоритме за откривање објеката као што су СИФТ, СУРФ, ФАСТ, БРЕИФ & ОРБ.
Као што је речено у претходним водичима, ОпенЦВ је Опен Соурце Цоммутер Висион Либрари која има Ц ++, Питхон и Јава интерфејсе и подржава Виндовс, Линук, Мац ОС, иОС и Андроид. Тако да се лако може инсталирати у Распберри Пи са Питхон и Линук окружењем. А Распберри Пи са ОпенЦВ и прикљученом камером може се користити за стварање многих апликација за обраду слика у стварном времену попут откривања лица, закључавања лица, праћења предмета, откривања таблица аутомобила, кућног сигурносног система итд.
Откривање и препознавање предмета чине најважнији случај употребе рачунарског вида, користе се за рад моћних ствари као што су
- Означавање сцена
- Робот Навигатион
- Самовозећи аутомобили
- Препознавање тела (Мицрософт Кинецт)
- Откривање болести и рака
- Препознавање лица
- Препознавање рукописа
- Идентификовање објеката на сателитским снимцима
Откривање објеката ВС препознавање
Препознавање објеката је други ниво откривања објеката у којем је рачунар у стању да препозна објекат из више објеката на слици и можда ће га моћи идентификовати.
Сада ћемо извршити неке функције обраде слике да бисмо пронашли објекат са слике.
Проналажење објекта са слике
Овде ћемо користити подударање шаблона за проналажење карактера / објекта на слици, користимо ОпенЦВ-ову функцију цв2.матцхТемплате () за проналажење тог објекта
импорт цв2 импорт нумпи као нп
Учитајте улазну слику и претворите је у сиву
имаге = цв2.имреад ('ВалдоБеацх.јпг') цв2.имсхов ('људи', слика) цв2.ваитКеи (0) греи = цв2.цвтЦолор (слика, цв2.ЦОЛОР_БГР2ГРЕИ)
Учитајте слику шаблона
темплате = цв2.имреад ('валдо.јпг', 0) # резултат подударања шаблона објекта преко резултата слике = цв2.матцхТемплате (сива, предложак, цв2.ТМ_ЦЦОЕФФ) син_вал, мак_вал, мин_лоц, мак_лоц = цв2.минМакЛоц (резултат)
Направите гранични оквир
топ_лефт = мак_лоц # увећавање величине граничног правоугаоника за 50 пиксела боттом_ригхт = (топ_лефт + 50, топ_лефт + 50) цв2.рецтангле (слика, топ_лефт, боттом_ригхт, (0,255,0), 5) цв2.имсхов ('објект је пронађен', слика) цв2.ваитКеи (0) цв2.дестроиАллВиндовс ()
У цв2.матцхТемплате (сива, предложак, цв2.ТМ_ЦЦОЕФФ) унесите сиву слику да бисте пронашли објекат и образац. Затим примените метод подударања шаблона за проналажење објеката са слике, овде се користи цв2.ТМ_ЦЦОЕФФ .
Цела функција враћа низ који се уноси у резултат, који је резултат поступка подударања предлошка.
А онда користимо цв2.минМакЛоц (резултат) , који даје координате или гранични оквир у којем је објект пронађен на слици, а када добијемо те координате, нацртајте правоугаоник преко њега и развуците мале димензије оквира тако да предмет се лако може уклопити у правоугаоник.
Постоји низ метода за извођење подударања шаблона и у овом случају користимо цв2.ТМ_ЦЦОЕФФ који означава коефицијент корелације.
Овде су кључне тачке (Кс, И) координате извучене помоћу детектора просијавања и исцртане преко слике помоћу цв2 функције кључне тачке цртања.
СУРФ
импорт цв2 импорт нумпи ас нп имаге = цв2.имреад ('парис.јпг') греи = цв2.цвтЦолор (имаге, цв2.ЦОЛОР_БГР2ГРЕИ)
Направите објекат СУРФ Феатуре Детецтор, овде постављамо хессов праг на 500
сурф = цв2.кфеатурес2д.СУРФ_цреате (500) кључне тачке, дескриптори = сурф.детецтАндЦомпуте (сиво, ниједно) принт ("Број откривених тачака:", лен (кључне тачке))
На улазној слици нацртајте богате кључне тачке
имаге = цв2.дравКеипоинтс (слика, кључне тачке, Ниједно, заставе = цв2.ДРАВ_МАТЦХЕС_ФЛАГС_ДРАВ_РИЦХ_КЕИПОИНТС) цв2.имсхов ('Метода функције - СУРФ', слика) цв2.ваитКеи () цв2.дестроиАллВиндовс ()
Излаз конзоле:
ФАСТ
импорт цв2 импорт нумпи ас нп имаге = цв2.имреад ('парис.јпг') греи = цв2.цвтЦолор (имаге, цв2.ЦОЛОР_БГР2ГРЕИ)
Направите објекат ФАСТ Детецтор
фаст = цв2.ФастФеатуреДетецтор_цреате () # Прибави кључне тачке, подразумевано је сузбијање не максимално Укључено # за искључење поставите фаст.сетБоол ('нонмакСуппрессион', Фалсе) кеипоинтс = фаст.детецт (сиво, Ниједно) принт ("Број кључних тачака Откривено: ", лен (кључне тачке))
На улазној слици нацртајте богате кључне тачке
имаге = цв2.дравКеипоинтс (слика, кључне тачке, Ниједно, заставице = цв2.ДРАВ_МАТЦХЕС_ФЛАГС_ДРАВ_РИЦХ_КЕИПОИНТС) цв2.имсхов ('Метода функције - БРЗО', слика) цв2.ваитКеи () цв2.дестроиАллВиндовс ()
Излаз конзоле:
КРАТКО
импорт цв2 импорт нумпи ас нп имаге = цв2.имреад ('парис.јпг') греи = цв2.цвтЦолор (имаге, цв2.ЦОЛОР_БГР2ГРЕИ)
Направите објекат ФАСТ детектор
бриеф = цв2.кфеатурес2д.БриефДесцрипторЕктрацтор_цреате ()
Направите БРИЕФ објекат за извлачење
#бриеф = цв2.ДесцрипторЕктрацтор_цреате ("КРАТКО") # Одредите кључне тачке кеипоинтс = фаст.детецт (сиво, ниједно)
Набавите дескрипторе и нове коначне тачке помоћу БРИЕФ-а
кључне тачке, дескриптори = кратко.цомрачунање (сиво, кључне тачке) испис ("Број откривених тачака:", лен (кључне тачке))
На улазној слици нацртајте богате кључне тачке
имаге = цв2.дравКеипоинтс (слика, кључне тачке, Ниједно, заставе = цв2.ДРАВ_МАТЦХЕС_ФЛАГС_ДРАВ_РИЦХ_КЕИПОИНТС) цв2.имсхов ('Начин функције - КРАТАК', слика) цв2.ваитКеи () цв2.дестроиАллВиндовс ()
Излаз конзоле:
ОРБ
импорт цв2 импорт нумпи ас нп имаге = цв2.имреад ('парис.јпг') греи = цв2.цвтЦолор (имаге, цв2.ЦОЛОР_БГР2ГРЕИ)
Направите ОРБ објекат, можемо одредити број кључних тачака које желимо
орб = цв2.ОРБ_цреате () # Одредити кључне тачке кеипоинтс = орб.детецт (сиво, Ниједно)
Набавите дескрипторе
кључне тачке, дескриптори = орб.цомпуте (сиво, кључне тачке) принт ("Број откривених кључних тачака:", лен (кључне тачке))
На улазној слици нацртајте богате кључне тачке
имаге = цв2.дравКеипоинтс (слика, кључне тачке, Ниједно, заставице = цв2.ДРАВ_МАТЦХЕС_ФЛАГС_ДРАВ_РИЦХ_КЕИПОИНТС) цв2.имсхов ('Метода функције - ОРБ', слика) цв2.ваитКеи () цв2.дестроиАллВиндовс ()
Излаз конзоле:
Можемо одредити број кључних тачака који има максимално ограничење од 5000, међутим подразумевана вредност је 500, односно ОРБ ће аутоматски открити најбољих 500 тачака ако није наведена за било коју вредност кључних тачака.
Дакле, овако се дешава откривање објеката у ОпенЦВ-у, исти програми се такође могу покретати у ОпенЦВ-у инсталираном Распберри Пи и могу се користити као преносни уређај попут паметних телефона који имају Гоогле Ленс.
Овај чланак је упућен са Мастер Цомпутер Висион ™ ОпенЦВ4 у Питхону са курсом за дубинско учење на Удеми-у, који је креирао Рајеев Ратан, претплатите се да бисте сазнали више о Цомпутер Висион-у и Питхону.