Технологија детекције и препознавања регистарских таблица има много примена. Може се користити у путним системима, паркиралиштима без улазница, резиденцијама за контролу приступа возилима и још много тога. Ова технологија комбинује компјутерски вид и вештачку интелигенцију.
Користићете Питхон да креирате програм за откривање и препознавање регистарских таблица. Програм ће узети улазну слику, обрадити је да би открио и препознао регистарску таблицу и на крају ће приказати знакове регистарске таблице као излаз.
Подешавање Питхон окружења
Да бисте удобно пратили овај водич, морате бити упознати са основама Питхон-а. Ово почиње подешавањем окружења програма.
Пре него што почнете да кодирате, морате да инсталирате неке библиотеке у свом окружењу. Отворите било који Питхон ИДЕ и креирајте Питхон датотеку. Покрените сваку команду на терминалу да бисте инсталирали одговарајућу библиотеку. Требало би да имате претходног
инсталирање Питхон ПИП-а на ваш рачунар.-
ОпенЦВ-Питхон: Користићете ову библиотеку за претходну обраду улазне слике и приказивање различитих излазних слика.
пип инсталирај ОпенЦВ-Питхон
-
имутилс: Користићете ову библиотеку да исечете оригиналну улазну слику на жељену ширину.
пип инсталирај имутилс
-
питессерацт: Користићете ову библиотеку да издвојите знакове регистарске таблице и претворите их у низове.
Библиотека питессерацт се ослања на Тессерацт ОЦР мотор за препознавање карактера.пип инсталирај питессерацт
Шта је Тессерацт ОЦР и како га инсталирати на рачунар
Тессерацт ОЦР је мотор који може препознају карактере језика. Требало би да га инсталирате на рачунар пре коришћења питессерацт библиотеке. Урадити тако:
- Отворите било који прегледач заснован на Цхроме-у
- Преузмите Тессерацт ОЦР подесити
- Покрените инсталацију и инсталирајте је као било који други програм
Након што сте припремили окружење и инсталирали тесерацт ОЦР, спремни сте за кодирање програма.
1. Увоз библиотека
Започните увозом библиотека које сте инсталирали у окружењу. Увоз библиотека вам омогућава да позовете и користите њихове функције у пројекту.
увоз цв2
увоз имутилс
увоз питессерацт
Морате да увезете ОпенЦВ-Питхон библиотека као цв2. Увезите друге библиотеке користећи иста имена која сте користили да бисте их инсталирали.
2. Узимање уноса
Затим усмјерите питессерацт на локацију на којој је инсталиран Тессерацт енгине. Узмите слику аутомобила као улаз користећи цв2.имреад функција. Замените назив слике именом слике коју користите. Чувајте слику у истој фасцикли као и ваш пројекат да би ствари биле лаке.
питессерацт.питессерацт.тессерацт_цмд = 'Ц:\\Програм Филес\\Тессерацт-ОЦР\\тессерацт.еке'
оригинал_имаге = цв2.имреад('имаге3.јпег')
Можете да замените следећу улазну слику оном коју желите да користите.
3. Претходна обрада улаза
Промените величину слике на 500 пиксела. Затим конвертујте слику у нијансе сиве као моћна функција детекције ивица ради само са сликама у сивим тоновима. Коначно, позовите билатералниФилтер функција за смањење шума на слици.
оригинал_имаге = имутилс.ресизе (оригинал_имаге, видтх=500)
граи_имаге = цв2.цвтЦолор (оригинал_имаге, цв2.ЦОЛОР_БГР2ГРЕИ)
граи_имаге = цв2.билатералФилтер (сива_слика, 11, 17, 17)
4. Детекција регистарске таблице на улазу
Детекција регистарске таблице је процес одређивања дела на аутомобилу који има карактере регистарске таблице.
Извођење детекције ивице
Почните тако што ћете позвати цв2.Цанни функција која ће аутоматски детектовати ивице на претходно обрађеној слици.
едгед_имаге = цв2.Цанни (сива_слика, 30, 200)
Са ових ивица ћемо пронаћи контуре.
Проналажење контура
Звати цв2.финдЦонтоурс функцију и проследите копију ивица слика. Ова функција ће открити контуре. Нацртајте око откривених контура на оригиналној слици користећи цв2.дравЦонтоурс функција. На крају, испишите оригиналну слику са свим нацртаним видљивим контурама.
контуре, Нова = цв2.финдЦонтоурс (едгед_имаге.цопи(), цв2.РЕТР_ЛИСТ, цв2.ЦХАИН_АППРОКС_СИМПЛЕ)
имг1 = оригинал_имаге.цопи()
цв2.дравЦонтоурс(имг1, контуре, -1, (0, 255, 0), 3)
цв2.имсхов("имг1", имг1)
Програм јасно црта све контуре које пронађе на слици аутомобила.
Након што пронађете контуре, морате их сортирати да бисте идентификовали најбоље кандидате.
Сортирање контура
Сортирајте контуре на основу минималне површине 30. Занемарите оне испод тога јер је мање вероватно да ће бити контуре регистарске таблице. Направите копију оригиналне слике и нацртајте је топ 30 контуре на слици. На крају, прикажите слику.
контуре = сортиране (контуре, кључ = цв2.цонтоурАреа, обрнуто = Истина)[:30]
# чува контуру регистарске таблице
сцреенЦнт = Ниједан
имг2 = оригинал_имаге.цопи()
# црта првих 30 контура
цв2.дравЦонтоурс(имг2, контуре, -1, (0, 255, 0), 3)
цв2.имсхов("имг2", имг2)
Сада има мање контура него што је било на почетку. Једине нацртане контуре су оне за које је приближно да садрже регистарску таблицу.
На крају, потребно је да пређете преко сортираних контура и одредите која је регистарска таблица.
Прелазак преко 30 најбољих контура
Направите петљу фор да бисте прешли преко контура. Потражите контуру са четири угла и одредите њен периметар и координате. Сачувајте слику контуре која садржи регистарску таблицу. На крају, нацртајте контуру регистарске таблице на оригиналној слици и прикажите је.
број = 0
идк = 7за ц у контурама:
# приближна контура регистарске таблице
цонтоур_периметер = цв2.арцЛенгтх (ц, Истина)
аппрок = цв2.аппрокПолиДП(ц, 0.018 * цонтоур_периметер, Истина)# Потражите контуре са 4 угла
аколен(приближно)== 4:
сцреенЦнт = прибл# пронађите координате контуре регистарске таблице
к, и, в, х = цв2.боундингРецт (ц)
нев_имг = оригинал_имаге [и: и + х, к: к + в]# чува нову слику
цв2.имврите('./'+стр (идк)+'.пнг',нев_имг)
идк += 1
пауза
# црта контуру регистарске таблице на оригиналној слици
цв2.дравЦонтоурс(оригинал_имаге, [сцреенЦнт], -1, (0, 255, 0), 3)
цв2.имсхов("откривена регистарска таблица", оригинал_имаге)
Након петље, ваш програм је идентификовао контуру која садржи регистарску таблицу. Црта само по контури регистарске таблице.
5. Препознавање откривене регистарске таблице
Препознавање регистарске таблице значи читање знакова на исеченој слици регистарске таблице. Учитајте слику регистарске таблице коју сте претходно сачували и прикажите је. Затим позовите питессерацт.имаге_то_стринг функцију и проследите исечену слику регистарске таблице. Ова функција претвара знакове на слици у низ.
# назив датотеке исечене слике регистарске таблице
цроппед_Лиценсе_Плате = './7.пнг'
цв2.имсхов("ошишанлиценцетањир", цв2.имреад(цроппед_Лиценсе_Плате))
# претвара знакове регистарске таблице у стринг
текст = питессерацт.имаге_то_стринг (изрезана_регистрска таблица, ланг='енг')
Исечена регистарска таблица је приказана испод. Знакови на њему ће бити резултат који ћете касније одштампати на екрану.
Након што сте открили и препознали регистарску таблицу, спремни сте да прикажете излаз.
6. Приказ излаза
Ово је последњи корак. Извучени текст штампате на екрану. Овај текст садржи знакове регистарске таблице.
принт(„Регистарска таблица је:“, текст)
цв2.ваитКеи(0)
цв2.дестроиАллВиндовс()
Очекивани резултат програма би требао бити сличан слици испод:
Текст регистарске таблице може се видети на терминалу.
Изоштрите своје Питхон вештине
Откривање и препознавање регистарских таблица аутомобила у Питхон-у је занимљив пројекат за рад. То је изазовно, па би требало да вам помогне да научите више о Питхон-у.
Када је у питању програмирање, пракса је суштина савладавања језика. Да бисте вежбали своје вештине, морате да радите на занимљивим пројектима.