Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Rozmazanie tváre môžete použiť na zakrytie tváre osoby vo videu alebo na obrázku z niekoľkých dôvodov. Súkromie a bezpečnosť sú tie najdôležitejšie. Väčšina platforiem na zdieľanie videa a softvéru na úpravu videa má zabudovanú funkciu rozmazania tváre.

Môžete si vytvoriť svoj vlastný program na rozmazanie tváre od začiatku pomocou Pythonu a knižníc OpenCV a NumPy.

Nastavenie vášho prostredia

Ak chcete pokračovať v tomto článku, musíte sa oboznámiť s základy Pythonu a mať základné porozumenie pomocou knižnice NumPy.

Otvorte akékoľvek IDE Python, ktoré vám vyhovuje. Vytvorte si virtuálne prostredie, do ktorého nainštalujete požadované knižnice. Vytvorte nový súbor Python. Prejdite na terminál a spustite nasledujúci príkaz na inštaláciu požadovaných knižníc. Knižnice odovzdajte ako zoznam oddelený medzerou.

pip nainštalovať OpenCV-python NumPy

OpenCV použijete na prevzatie a predbežné spracovanie video vstupu a NumPy na prácu s poľami.

instagram viewer

Po nainštalovaní knižníc počkajte, kým IDE aktualizuje kostry projektu. Keď je aktualizácia dokončená a prostredie je pripravené, môžete začať programovať.

Úplný zdrojový kód je dostupný v a úložisko GitHub.

Import požadovaných knižníc

Začnite importovaním knižníc OpenCV a NumPy. To vám umožní volať a používať všetky funkcie, ktoré podporujú. Importujte OpenCV-python ako cv2.

importovať cv2
importovať numpy ako np

Moduly OpenCV-python používajú názov cv2 ako konvenciu, ktorú vytvorila komunita OpenCV. OpenCV-python je pythonovský obal knižnice OpenCV, ktorá je napísaná v C++.

Prijímanie vášho príspevku

Vytvorte premennú a inicializujte ju Zachytávanie videa objekt. Ak chcete ako vstupný zdroj použiť primárnu kameru počítača, zadajte ako argument nulu. Ak chcete použiť externú kameru pripojenú k počítaču, prejdite na jednu. Ak chcete vykonať rozmazanie tváre na vopred nahranom videu, prejdite namiesto toho cestu videa. Komu použite vzdialenú kameru, odovzdajte adresu URL kamery obsahujúcu jej IP adresu a číslo portu.

cap = cv2.VideoCapture(0)

Ak chcete vykonať rozmazanie tváre na vstupe, budete potrebovať tri funkcie:

  • Funkcia, ktorá predbežne spracuje vstup.
  • Funkcia, ktorá rozmaže tvár na vstupe.
  • Hlavná funkcia, ktorá bude riadiť tok programu a zobrazovať výstup.

Predspracovanie video vstupu

Vytvorte funkciu predbežného spracovania vstupu, ktorá bude brať každú snímku vstupného videa ako svoj vstup. Inicializujte triedu CascadeClassifier, ktorú budete používať na detekciu tváre. Zmeňte veľkosť rámu na 640 x 640 pixelov. Preveďte rám so zmenenou veľkosťou na odtiene sivej pre jednoduchšie spracovanie a nakoniec zistite tváre vo vstupe a spojte ich s obdĺžnikmi.

defimage_preprocess(rám):
face_detector = cv2.CascadeClassifier (cv2.data.haarcascades
+ 'haarcascade_frontalface_default.xml')

resized_image = cv2.resize (snímka, (640, 640))

sivý_obrázok = cv2.cvtColor (obrázok so zmenenou veľkosťou,
cv2.COLOR_BGR2GRAY)

face_rects = face_detector.detectMultiScale(
sivý_obrázok, 1.04, 5, minSize=(20, 20))

vrátiť resized_image, face_rects

Táto funkcia vráti n-ticu obsahujúcu obrázok so zmenenou veľkosťou a zoznam obdĺžnikov, ktoré predstavujú rozpoznané tváre.

Rozmazanie tváre

Vytvorte funkciu rozmazania, ktorá rozmaže tváre vo vašom zadaní. Funkcia berie ako vstup rám so zmenenou veľkosťou a zoznam obdĺžnikov ohraničujúcich plochy, ktoré vrátila funkcia predbežného spracovania. Slučky cez každý obdĺžnik tváre. Vypočíta stred každého obdĺžnika a polomer rozmazaného kruhu. Vytvorí čierny obrázok s rovnakými rozmermi ako rám so zmenenou veľkosťou inicializáciou všetkých pixelov na nulu. Nakreslí biely kruh na čiernom obrázku, ktorého stred je v obdĺžniku tváre pomocou vypočítaného polomeru. Nakoniec rozmaže obrázok na bielom kruhu.

defrozostrenie tváre(resized_frame, face_rects):
pre (x, y, š, h) v face_rects:
# Určenie stredu a polomeru
# rozmazaného kruhu
stred_x = x + w // 3
stred_y = y + h // 3
polomer = h // 1

# vytvorenie čierneho obrazu s podobným
# rozmery ako rám
maska ​​= np.zeros((zmenený_rámec.tvar[:3]), np.uint8)

# nakreslite biely kruh v oblasti tváre rámu
cv2.circle (maska, (stred_x, stred_y), polomer,
(255, 255, 255), -1)

# rozmazanie celého rámu
blurred_image = cv2.medianBlur (snímka so zmenenou veľkosťou, 99)

# rekonštrukcia rámu:
# - pixely z rozmazaného rámca, ak maska ​​> 0
# - v opačnom prípade vezmite pixely z pôvodného rámu
resized_frame = np.where (maska ​​> 0, rozmazaný_obrázok,
resized_frame)

vrátiť resized_frame

Funkcia používa NumPy kde() funkcia na rekonštrukciu rámu počas rozmazania.

Ovládanie toku vášho programu

Vytvorte hlavnú funkciu, ktorá bude fungovať ako vstupný bod vášho programu. Potom bude riadiť tok programu. Funkcia spustí nekonečnú slučku na nepretržité zachytávanie snímok z video vstupu. Zavolajte metódu čítania objektu cap na čítanie snímky z fotoaparátu.

Funkcia potom odovzdá snímku funkcii predbežného spracovania a návratové hodnoty odovzdá inej funkcii face_blur, čím sa získa rozmazaný obrázok. Potom zmení veľkosť snímky vrátenej funkciou rozmazania a zobrazí výstup.

defHlavná():
zatiaľ čoPravda:
úspech, rámec = cap.read()
resized_input, face_rects = image_preprocess (frame)
blurred_image = rozostrenie tváre (zmenená_veľkosť, tvár_obdĺžniky)

# Zobrazenie rozmazaného obrazu
cv2.imshow("Rozmazaný obraz", cv2.resize (rozmazaný_obrázok, (500, 500)))

ak cv2.waitKey(1) == ord("q"):
prestávka

Funkcia tiež ukončí zobrazenie výstupu, keď používateľ stlačí kláves q.

Spustenie programu

Uistite sa, že pri spustení skriptu sa ako prvá spustí hlavná funkcia. Táto podmienka bude nepravdivá, ak importujete skript ako modul v inom programe.

ak __meno__ == "__Hlavná__":
Hlavná()

To vám umožní použiť skript ako modul alebo ho spustiť ako samostatný program. Po spustení programu by ste mali vidieť výstup podobný tomuto:

Tvár je rozmazaná a na nerozoznanie.

Aplikácie rozmazania tváre v reálnom svete

Rozmazanie tváre môžete použiť v mnohých typoch aplikácií na ochranu súkromia ľudí. Street view a mapové služby využívajú rozmazanie na rozmazanie tvárí ľudí na snímkach, ktoré zachytávajú. Orgány činné v trestnom konaní používajú rozmazanie tváre na ochranu identity svedkov.

Mnoho platforiem na zdieľanie videí pre svojich používateľov integrovalo aj funkciu rozmazania tváre. Porovnanie použitia rozmazania tváre v týchto oblastiach vám pomôže sledovať, ako technológiu integrujú iné platformy.