Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Zameglitev obraza lahko uporabite za prikrivanje obraza osebe v videu ali sliki iz več razlogov. Vprašanja zasebnosti in varnosti so najbolj prevladujoča. Večina platform za skupno rabo videoposnetkov in programske opreme za urejanje videoposnetkov ima vgrajeno funkcijo zameglitve obraza.

Z uporabo Pythona ter knjižnic OpenCV in NumPy lahko iz nič ustvarite svoj program za zameglitev obraza.

Nastavitev vašega okolja

Če želite nadaljevati s tem člankom, morate poznati osnove Pythona in imajo osnovno razumevanje z uporabo knjižnice NumPy.

Odprite kateri koli Python IDE, ki vam ustreza. Ustvarite virtualno okolje, v katerega boste namestili zahtevane knjižnice. Ustvarite novo datoteko Python. Pomaknite se do terminala in zaženite naslednji ukaz za namestitev zahtevanih knjižnic. Posredujte knjižnice kot s presledkom ločen seznam.

pip namestite OpenCV-python NumPy
instagram viewer

Uporabili boste OpenCV za zajemanje in predhodno obdelavo video vnosa in NumPy za delo z nizi.

Ko namestite knjižnice, počakajte, da IDE posodobi okostja projekta. Ko je posodobitev končana in je okolje pripravljeno, lahko začnete kodirati.

Celotna izvorna koda je na voljo v a Repozitorij GitHub.

Uvažanje zahtevanih knjižnic

Začnite z uvozom knjižnic OpenCV in NumPy. Tako boste lahko poklicali in uporabljali vse funkcije, ki jih podpirajo. Uvozi OpenCV-python kot cv2.

uvoz cv2
uvoz numpy kot np

Moduli OpenCV-python uporabljajo ime cv2 kot dogovor, ki ga je vzpostavila skupnost OpenCV. OpenCV-python je Python ovoj knjižnice OpenCV, ki je napisana v C++.

Sprejemanje vaših prispevkov

Ustvarite spremenljivko in inicializirajte VideoCapture predmet. Podajte nič kot argument, če želite kot vhodni vir uporabiti primarno kamero vašega računalnika. Če želite uporabljati zunanjo kamero, priključeno na vaš računalnik, jo prenesite. Če želite izvesti zameglitev obraza na vnaprej posnetem videu, namesto tega posredujte pot videoposnetka. Za uporabite oddaljeno kamero, posredujte URL kamere, ki vsebuje njen naslov IP in številko vrat.

cap = cv2.VideoCapture(0)

Če želite izvesti zameglitev obraza na vhodu, boste potrebovali tri funkcije:

  • Funkcija, ki bo vnaprej obdelala vnos.
  • Funkcija, ki bo zameglila obraz v vnosu.
  • Glavna funkcija, ki bo nadzorovala potek programa in prikazala izhod.

Predhodna obdelava video vhoda

Ustvarite funkcijo predprocesiranja vnosa, ki bo vsak okvir vhodnega videoposnetka vzel kot svoj vhod. Inicializirajte razred CascadeClassifier, ki ga boste uporabljali za zaznavanje obrazov. Spremenite velikost okvirja na 640 x 640 slikovnih pik. Spremenjeni okvir pretvorite v sivine za lažjo obdelavo in na koncu zaznajte obraze v vnosu in jih povežite s pravokotniki.

defpredproces_slike(okvir):
face_detector = cv2.CascadeClassifier (cv2.data.haarcascades
+ 'haarcascade_frontalface_default.xml')

resized_image = cv2.resize (okvir, (640, 640))

siva_slika = cv2.cvtColor (spremenjena velikost_slike,
cv2.COLOR_BGR2GRAY)

face_rects = face_detector.detectMultiScale(
siva_slika, 1.04, 5, minSize=(20, 20))

vrnitev spremenjena_slika, obraz_poravnava

Ta funkcija vrne zbirko, ki vsebuje spremenjeno velikost slike in seznam pravokotnikov, ki predstavljajo zaznane obraze.

Zameglitev obraza

Ustvarite funkcijo zameglitve, ki bo zameglila obraze v vašem vnosu. Funkcija kot vhod vzame spremenjeni okvir in seznam pravokotnikov, ki omejujejo obraze, vrnjena s funkcijo predprocesiranja. Zanka čez vsak obrazni pravokotnik. Izračuna središče vsakega pravokotnika in polmer zamegljenega kroga. Ustvari črno sliko, ki ima enake dimenzije kot spremenjeni okvir, tako da inicializira vse slikovne pike na nič. Na črno sliko nariše bel krog, katerega središče je v pravokotniku obraza z uporabo izračunanega polmera. Nazadnje zamegli sliko na belem krogu.

defface_blur(spremenjena velikost_okvirja, obrazne_poravnave):
za (x, y, w, h) v face_rects:
# Določanje središča in polmera
# kroga za zamegljevanje
center_x = x + w // 3
center_y = y + h // 3
polmer = h // 1

# ustvarjanje črne slike s podobnim
# dimenzije kot okvir
maska ​​= np.zeros((resized_frame.shape[:3]), np.uint8)

# narišite bel krog v predelu obraza okvirja
cv2.krog (maska, (center_x, center_y), polmer,
(255, 255, 255), -1)

# zameglitev celotnega okvirja
zamegljena_slika = cv2.medianBlur (spremenjena velikost_okvira, 99)

# rekonstrukcija okvirja:
# - slikovne pike iz zamegljenega okvirja, če je maska ​​> 0
# - v nasprotnem primeru vzemite slikovne pike iz izvirnega okvira
spremenjena velikost_okvir = np.kjer (maska ​​> 0, zamegljena_slika,
spremenjena velikost_okvirja)

vrnitev spremenjena velikost_okvirja

Funkcija uporablja NumPy kje() funkcija za rekonstrukcijo okvirja med zameglitvijo.

Nadzor poteka vašega programa

Ustvarite glavno funkcijo, ki bo delovala kot vstopna točka vašega programa. Nato bo nadzoroval potek programa. Funkcija bo začela neskončno zanko za neprekinjen zajem okvirjev video vhoda. Pokličite metodo branja predmeta pokrova, da preberete okvir iz kamere.

Funkcija bo nato posredovala okvir funkciji predprocesiranja in posredovala vrnjene vrednosti drugi funkciji, face_blur, da dobi zamegljeno sliko. Nato spremeni velikost okvirja, ki ga vrne funkcija zameglitve, in prikaže rezultat.

defglavni():
medtemPrav:
uspeh, okvir = cap.read()
resized_input, face_rects = image_preprocess (okvir)
blurred_image = face_blur (spremenjena velikost_vnosa, face_rects)

# Prikaz zamegljene slike
cv2.imshow("Zamegljena slika", cv2.resize (zamegljena_slika, (500, 500)))

če cv2.waitKey(1) == red("q"):
odmor

Funkcija prekine tudi prikaz izhoda, ko uporabnik pritisne tipko q.

Izvajanje programa

Zagotovite, da se glavna funkcija najprej zažene, ko zaženete skript. Ta pogoj bo napačen, če uvozite skript kot modul v drug program.

če __ime__ == "__glavni__":
glavni ()

To vam omogoča uporabo skripta kot modula ali zagon kot samostojen program. Ko se program zažene, bi morali videti izpis, podoben temu:

Obraz je zamegljen in neprepoznaven.

Realne aplikacije zameglitve obraza

Zameglitev obraza lahko uporabite v številnih vrstah aplikacij, da zaščitite zasebnost ljudi. Storitve pogleda ulic in zemljevidov uporabljajo zameglitev, da zameglijo obraze ljudi na slikah, ki jih posnamejo. Organi pregona uporabljajo zameglitev obraza za zaščito identitete prič.

Številne platforme za izmenjavo videov so svojim uporabnikom vgradile tudi funkcijo zameglitve obraza. Primerjava uporabe zameglitve obraza na teh področjih vam bo pomagala opaziti, kako druge platforme integrirajo to tehnologijo.