Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Можете да използвате замъгляване на лицето, за да прикриете лицето на човек във видеоклип или изображение по няколко причини. Проблемите с поверителността и сигурността са най-преобладаващите. Повечето платформи за споделяне на видео и софтуер за редактиране на видео имат вградена функция за замъгляване на лица.

Можете да създадете своя собствена програма за замъгляване на лица от нулата, като използвате Python и библиотеките OpenCV и NumPy.

Настройване на вашата среда

За да продължите тази статия, трябва да сте запознати с основите на Python и имат основно разбиране за с помощта на библиотеката NumPy.

Отворете всяка Python IDE, която ви харесва. Създайте виртуална среда, в която ще инсталирате необходимите библиотеки. Създайте нов Python файл. Отидете до терминала и изпълнете следната команда, за да инсталирате необходимите библиотеки. Предайте библиотеките като списък, разделен с интервал.

instagram viewer
pip инсталирайте OpenCV-python NumPy

Ще използвате OpenCV за вземане и предварителна обработка на видео входа и NumPy за работа с масиви.

След като инсталирате библиотеките, изчакайте IDE да актуализира скелетите на проекта. Когато актуализацията приключи и средата е готова, можете да започнете да кодирате.

Пълният изходен код е достъпен в a GitHub хранилище.

Импортиране на необходимите библиотеки

Започнете с импортиране на OpenCV и NumPy библиотеки. Това ще ви позволи да се обаждате и да използвате всички поддържани от тях функции. Импортирайте OpenCV-python като cv2.

импортиране cv2
импортиране numpy като np

Модулите OpenCV-python използват името cv2 като конвенция, установена от общността на OpenCV. OpenCV-python е обвивка на Python на библиотеката OpenCV, която е написана на C++.

Вземане на вашето мнение

Създайте променлива и инициализирайте Видеозапис обект. Подайте нула като аргумент, ако искате да използвате основната камера на вашия компютър като входен източник. За да използвате външна камера, свързана към вашия компютър, преминете една. За да извършите замъгляване на лица върху предварително записано видео, вместо това предайте пътя на видеото. Да се използвайте отдалечена камера, предайте URL адреса на камерата, съдържащ нейния IP адрес и номер на порт.

cap = cv2.VideoCapture(0)

За да извършите замъгляване на лицето на входа, ще ви трябват три функции:

  • Функция, която ще обработи предварително входа.
  • Функция, която ще замъгли лицето във входа.
  • Основна функция, която ще контролира потока на програмата и ще показва изхода.

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

Създайте функция за предварителна обработка на входа, която ще приема всеки кадър от входното видео като вход. Инициализирайте класа CascadeClassifier, който ще използвате за разпознаване на лица. Преоразмерете рамката до 640 на 640 пиксела. Преобразувайте преоразмерената рамка в скала на сивото за по-лесна обработка и накрая открийте лицата във входа и ги свържете с правоъгълници.

дефпредварителна обработка на изображение(кадър):
face_detector = cv2.CascadeClassifier (cv2.data.haarcascades
+ 'haarcascade_frontalface_default.xml')

resized_image = cv2.resize (рамка, (640, 640))

сиво_изображение = cv2.cvtColor (преоразмерено_изображение,
cv2.COLOR_BGR2GRAY)

face_rects = face_detector.detectMultiScale(
сиво_изображение, 1.04, 5, minSize=(20, 20))

връщане преоразмерено_изображение, face_rects

Тази функция връща кортеж, съдържащ преоразмереното изображение и списък с правоъгълници, които представляват откритите лица.

Замъгляване на лицето

Създайте функция за замъгляване, която ще замъгли лицата във вашия вход. Функцията приема преоразмерената рамка и списъка с правоъгълници, ограничаващи лицата, върнати от функцията за предварителна обработка, като вход. Примки върху всеки лицев правоъгълник. Изчислява центъра на всеки правоъгълник и радиуса на замъгляващия кръг. Създава черно изображение със същите размери като преоразмерената рамка, като инициализира всички пиксели до нула. Чертае бял кръг върху черното изображение, чийто център е в правоъгълника на лицето, използвайки изчисления радиус. Накрая размазва изображението върху белия кръг.

дефface_blur(resized_frame, face_rects):
за (x, y, w, h) в face_rects:
# Задаване на център и радиус
# от кръга за замъгляване
center_x = x + w // 3
center_y = y + h // 3
радиус = h // 1

# създаване на черно изображение с подобни
# размери като рамка
маска = np.zeros((resized_frame.shape[:3]), np.uint8)

# начертайте бял кръг в областта на лицето на рамката
cv2.circle (маска, (център_x, център_y), радиус,
(255, 255, 255), -1)

# замъгляване на целия кадър
замъглено_изображение = cv2.medianBlur (преоразмерена_рамка, 99)

# реконструиране на рамката:
# - пикселите от замъглената рамка, ако mask > 0
# - в противен случай вземете пикселите от оригиналния кадър
resized_frame = np.where (маска > 0, замъглено_изображение,
преоразмерена_рамка)

връщане преоразмерена_рамка

Функцията използва NumPy където() функция за реконструиране на рамката по време на замъгляване.

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

Създайте основна функция, която ще действа като входна точка на вашата програма. След това ще контролира потока на програмата. Функцията ще започне безкраен цикъл за непрекъснато заснемане на кадрите от видео входа. Извикайте метода за четене на обекта cap, за да прочетете рамка от камерата.

След това функцията ще предаде рамката на функцията за предварителна обработка и ще предаде върнатите стойности на друга функция, face_blur, за да получи размазано изображение. След това преоразмерява рамката, върната от функцията за замъгляване, и показва резултата.

дефосновен():
докатоВярно:
успех, рамка = cap.read()
resized_input, face_rects = image_preprocess (рамка)
blurred_image = face_blur (resized_input, face_rects)

# Възпроизвеждане на замъглено изображение
cv2.imshow(„Замъглено изображение“, cv2.resize (размазано_изображение, (500, 500)))

ако cv2.waitKey(1) == ord("q"):
прекъсвам

Функцията също прекратява изходния дисплей, когато потребителят натисне клавиша q.

Изпълнение на програмата

Уверете се, че основната функция се изпълнява първа, когато стартирате скрипта. Това условие ще бъде невярно, ако импортирате скрипта като модул в друга програма.

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

Това ви позволява да използвате скрипта като модул или да го стартирате като самостоятелна програма. Когато програмата се изпълнява, трябва да видите резултат, подобен на този:

Лицето е размазано и неузнаваемо.

Реални приложения на замъгляване на лица

Можете да приложите замъгляване на лицето в много видове приложения, за да защитите поверителността на хората. Услугите за уличен изглед и картографиране използват замъгляване, за да замъглят лицата на хората в изображенията, които заснемат. Органите на реда използват замъгляване на лицето, за да защитят самоличността на свидетелите.

Много платформи за споделяне на видео също са интегрирали функция за замъгляване на лица за своите потребители. Сравняването на използването на замъгляване на лица в тези области ще ви помогне да видите как други платформи интегрират технологията.