Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Можете да користите замућење лица да бисте сакрили лице особе, на видео снимку или слици, из неколико разлога. Питања приватности и безбедности су најпревладавајућа. Већина платформи за дељење видеа и софтвера за уређивање видеа имају уграђену функцију замућења лица.

Можете креирати сопствени програм за замућивање лица од нуле користећи Питхон и ОпенЦВ и НумПи библиотеке.

Подешавање вашег окружења

Да бисте наставили са овим чланком, морате бити упознати са основе Пајтона и имају основно разумевање користећи НумПи библиотеку.

Отворите било који Питхон ИДЕ који вам одговара. Креирајте виртуелно окружење у које ћете инсталирати потребне библиотеке. Направите нову Питхон датотеку. Идите до терминала и покрените следећу команду да бисте инсталирали потребне библиотеке. Проследите библиотеке као листу раздвојену размаком.

пип инсталл ОпенЦВ-питхон НумПи
instagram viewer

Користићете ОпенЦВ да узмете и унапред обрадите видео улаз и НумПи за рад са низовима.

Када инсталирате библиотеке, сачекајте да ИДЕ ажурира скелете пројекта. Када је ажурирање завршено и окружење спремно, можете почети са кодирањем.

Комплетан изворни код је доступан у а ГитХуб спремиште.

Увоз потребних библиотека

Започните увозом ОпенЦВ и НумПи библиотека. Ово ће вам омогућити да позовете и користите све функције које подржавају. Увезите ОпенЦВ-питхон као цв2.

увоз цв2
увоз нумпи као нп

ОпенЦВ-питхон модули користе назив цв2 као конвенцију коју је успоставила ОпенЦВ заједница. ОпенЦВ-питхон је Питхон омотач ОпенЦВ библиотеке која је написана у Ц++.

Узимамо ваш допринос

Креирајте променљиву и иницијализујте Видео снимање објекат. Пренесите нулу као аргумент ако желите да користите примарну камеру вашег рачунара као извор улаза. Да бисте користили спољну камеру прикључену на рачунар, прођите једну. Да бисте извршили замућење лица на унапред снимљеном видео снимку, уместо тога прођите путању видеа. До користите даљинску камеру, проследите УРЛ камере која садржи њену ИП адресу и број порта.

цап = цв2.ВидеоЦаптуре(0)

Да бисте извршили замућење лица на улазу, биће вам потребне три функције:

  • Функција која ће унапред обрадити унос.
  • Функција која ће замутити лице у улазу.
  • Главна функција која ће контролисати ток програма и приказати излаз.

Претходна обрада видео улаза

Креирајте функцију за претходну обраду улаза која ће узети сваки кадар улазног видеа као свој улаз. Иницијализујте класу ЦасцадеЦлассифиер коју ћете користити за детекцију лица. Промените величину оквира на 640 к 640 пиксела. Претворите оквир промењене величине у нијансе сиве ради лакше обраде и на крају откријте лица у улазу и повежите их правоугаоницима.

дефимаге_препроцесс(Рам):
фаце_детецтор = цв2.ЦасцадеЦлассифиер (цв2.дата.хаарцасцадес
+ 'хаарцасцаде_фронталфаце_дефаулт.кмл')

ресизед_имаге = цв2.ресизе (оквир, (640, 640))

сива_имаге = цв2.цвтЦолор (промењена_слика,
цв2.ЦОЛОР_БГР2ГРЕИ)

фаце_рецтс = фаце_детецтор.детецтМултиСцале(
сива_слика, 1.04, 5, минСизе=(20, 20))

повратак ресизе_имаге, фаце_рецтс

Ова функција враћа тупле који садржи слику промењене величине и листу правоугаоника који представљају откривена лица.

Замагљивање лица

Направите функцију замућења која ће замутити лица у вашем уносу. Функција узима оквир промењене величине и листу правоугаоника који ограничавају лица које је вратила функција за претходну обраду као улаз. Петље преко сваког правоугаоника лица. Израчунава центар сваког правоугаоника и радијус замућеног круга. Прави црну слику која има исте димензије као оквир промењене величине иницијализацијом свих пиксела на нулу. Црта бели круг на црној слици чији је центар у правоугаонику лица користећи израчунати радијус. Коначно, замагљује слику на белом кругу.

деффаце_блур(промењена_оквир, лице_рецтс):
за (к, и, в, х) ин фаце_рецтс:
# Одређивање центра и радијуса
# круга замућења
центар_к = к + в // 3
центер_и = и + х // 3
полупречник = х // 1

# креирање црне слике са сличним
# димензија као оквир
маска = нп.зерос((промењена величина_фраме.схапе[:3]), нп.уинт8)

# нацртајте бели круг у пределу лица оквира
цв2.цирцле (маска, (центер_к, центер_и), радијус,
(255, 255, 255), -1)

# замагљивање целог кадра
блурред_имаге = цв2.медианБлур (промењена величина оквира, 99)

# реконструкција оквира:
# - пиксели из замућеног кадра ако је маска > 0
# - у супротном, узмите пикселе из оригиналног оквира
ресизед_фраме = нп.вхере (маска > 0, блурред_имаге,
ресизе_фраме)

повратак ресизед_фраме

Функција користи НумПи где() функција за реконструкцију кадра током замућења.

Контролисање тока вашег програма

Направите главну функцију која ће деловати као улазна тачка вашег програма. Затим ће контролисати ток програма. Функција ће покренути бесконачну петљу за континуирано снимање кадрова видео улаза. Позовите метод читања цап објекта да бисте прочитали оквир са камере.

Функција ће затим проследити оквир функцији за претходну обраду и проследити повратне вредности другој функцији, фаце_блур, да би добила замућену слику. Затим мења величину оквира који враћа функција замућења и приказује излаз.

дефглавни():
докИстина:
успех, оквир = цап.реад()
ресизед_инпут, фаце_рецтс = имаге_препроцесс (фраме)
блурред_имаге = фаце_блур (промењена величина_уноса, фаце_рецтс)

# Приказ замућене слике
цв2.имсхов("Замућена слика", цв2.ресизе (блурред_имаге, (500, 500)))

ако цв2.ваитКеи(1) == орд("к"):
пауза

Функција такође прекида приказ излаза када корисник притисне тастер к.

Покретање програма

Уверите се да се главна функција прво покреће када покренете скрипту. Овај услов ће бити нетачан ако увезете скрипту као модул у другом програму.

ако __наме__ == "__главни__":
главни()

Ово вам омогућава да користите скрипту као модул или да је покренете као самостални програм. Када се програм покрене, требало би да видите излаз сличан овом:

Лице је замућено и непрепознатљиво.

Примене замућења лица у стварном свету

Можете да примените замућење лица у многим врстама апликација да бисте заштитили приватност људи. Услуге приказа улице и мапирања користе замућење да би замаглили лица људи на сликама које снимају. Полиција користи замагљивање лица да заштити идентитет сведока.

Многе платформе за дељење видеа такође су интегрисале функцију замућења лица за своје кориснике. Упоређивање употребе замућења лица у овим областима ће вам помоћи да видите како друге платформе интегришу технологију.