Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Основная цель этих инструкций - показать, насколько простой будет обработка изображений с помощью MATLAB.
Обнаружение и отслеживание лиц были важной и активной областью исследований, поэтому я собираюсь объяснить, как это можно сделать с помощью Matlab.
В следующем уроке я собираюсь сделать следующее:
1. обнаружение лиц на изображении и подсчет.
2. обнаружение человеческих глаз на изображении и подсчет.
3. обнаружение человеческого рта на изображении и подсчет.
4. обнаружение лиц на видео и подсчет.
5. обнаружение человеческих глаз на видео и подсчет.
6. обнаружение человеческого рта на видео и подсчет.
Шаг 1. Обнаружение лиц на изображении и подсчет
СЦЕНАРИЙ MATLAB:
очистить все% очистить все объектыclc% очистить экран
FDetect = vision. CascadeObjectDetector; % Обнаружение объектов с использованием алгоритма Виолы-Джонса
% Прочитать входное изображение
image = imread ('c: / Deskotp / HarryPotter.jpg'); % загрузить изображение с помощью imread ('расположение файла / name.jpg')
BB = шаг (FDetect, изображение); % Возвращает значения граничной рамки в зависимости от количества объектов
рисунок, imshow (I);
Подожди
для i = 1: size (BB, 1)
прямоугольник ('Позиция', BB (i,:), 'Ширина линии', 5, 'Стиль линии', '-', 'EdgeColor', 'r'); % r-красный, g-зеленый, b-синий
конец
title («Распознавание лиц»); % титул фигуриста;
Результат будет похож на изображение, которое было прикреплено на этом шаге.
Чтобы подсчитать количество обнаруженных лиц:
очистить все% очистить все объектыclc% очистить экран
FDetect = vision. CascadeObjectDetector; % Обнаружение объектов с использованием алгоритма Виолы-Джонса% Считывание входного изображения
image = imread ('c: / Deskotp / HarryPotter.jpg'); % загрузить изображение с помощью imread ('расположение файла / name.jpg')
BB = шаг (FDetect, изображение); % Возвращает значения граничной рамки в зависимости от количества объектов
фигура,
imshow (I);
Подожди
для i = 1: size (BB, 1)
прямоугольник ('Позиция', BB (i,:), 'Ширина линии', 5, 'Стиль линии', '-', 'EdgeColor', 'r'); % r-красный, g-зеленый, b-синий
конец
text (10, 10, strcat ('\ color {red} Кол-во лиц =', num2str (length (BB)))); Эта строка дает вам счет
title («Распознавание лиц»); % название рисунка
откладывать;
Шаг 2: Обнаружение человеческих глаз на изображении и подсчет
СЦЕНАРИЙ MATLAB:
очистить все;
clc;
% Для обнаружения EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');
% Прочтите ввод
image = imread ('c: / Deskotp / HarryPotter.jpg'); % загрузить изображение с помощью imread ('расположение файла / name.jpg')
BB = шаг (EyeDetect, изображение);
фигура,
imshow (изображение);
прямоугольник ('Позиция', BB, 'Ширина линии', 4, 'Стиль линии', '-', 'Цвет края', 'b');
title («Обнаружение глаз»);
Результат будет похож на изображение, которое было прикреплено на этом шаге.
Чтобы подсчитать количество обнаруженных глаз:
очистить все; clc; % Для обнаружения глаз
EyeDetect = vision. CascadeObjectDetector ('EyePairBig');
image = imread ('c: / Deskotp / HarryPotter.jpg'); % загрузить изображение с помощью imread ('расположение файла / name.jpg')
BB = шаг (EyeDetect, изображение); рисунок, imshow (изображение); прямоугольник ('Позиция', BB, 'Ширина линии', 4, 'Стиль линии', '-', 'Цвет края', 'b');
text (10, 10, strcat ('\ color {red} Кол-во глаз =', num2str (length (BB))));
title («Обнаружение глаз»);
Шаг 3: Обнаружение человеческого рта на изображении и подсчет
СЦЕНАРИЙ MATLAB:
очистить все;
clc;
% Чтобы обнаружить рот
MouthDetect = vision. CascadeObjectDetector ('Рот', 'MergeThreshold', 16);
% Прочтите входное изображение = imread ('c: / Deskotp / HarryPotter.jpg'); % загрузить изображение с помощью imread ('расположение файла / name.jpg')
BB = шаг (MouthDetect, изображение);
рисунок, imshow (изображение);
Подожди
для i = 1: size (BB, 1)
прямоугольник ('Позиция', BB (i,:), 'Ширина линии', 4, 'Стиль линии', '-', 'EdgeColor', 'r');
конец
title («Обнаружение рта»);
откладывать;
Результат будет похож на изображение, которое было прикреплено на этом шаге.
Чтобы подсчитать количество обнаруженных ртов:
очистить все; clc; % Чтобы обнаружить рот
MouthDetect = vision. CascadeObjectDetector ('Рот', 'MergeThreshold', 16); % Прочтите ввод
image = imread ('c: / Deskotp / HarryPotter.jpg'); % загрузить изображение с помощью imread ('расположение файла / name.jpg') BB = step (MouthDetect, image);
рисунок, imshow (изображение);
Подожди
для i = 1: size (BB, 1)
прямоугольник ('Позиция', BB (i,:), 'Ширина линии', 4, 'Стиль линии', '-', 'EdgeColor', 'r');
конец
text (10, 10, strcat ('\ color {red} Кол-во ртов =', num2str (length (BB))));
title («Обнаружение рта»);
откладывать;
Шаг 4: Обнаружение лиц, глаз, рта на видео и подсчет
очистить все;
закрыть все;
clc;
% Захватите видеокадры с помощью функции видеовхода% Вам необходимо заменить разрешение и имя установленного адаптера.
a = vision. CascadeObjectDetector; % для обнаружения лица
% a = vision. CascadeObjectDetector ('Рот', 'MergeThreshold', 16); % для обнаружения рта
% a = vision. CascadeObjectDetector ('EyePairBig'); % для обнаружения глаз
% использовать только любой (лицо / глаза / рот)
vid = videoinput ('winvideo', 1, 'yuy2_320x240'); % Задайте свойства видеообъекта
set (vid, 'FramesPerTrigger', Inf);
set (vid, 'ReturnedColorspace', 'rgb');
vid. FrameGrabInterval = 5; % начните сбор видео здесь
start (vid)% Установить цикл, который останавливается после 100 кадров захвата
while (vid. FramesAcquired <= 200)% Получить снимок текущего кадра
данные = получает снимок (видео);
imshow (данные);
b = шаг (a, данные);
Подожди
для i = 1: size (b, 1)
rectangle ('позиция', b (i,:), 'ширина линии', 2, 'стиль линии', '-', 'EdgeColor', 'r');
конец
откладывать
text (10, 10, strcat ('\ color {green} Кол-во лиц =', num2str (length (b))));
конец
стоп (видео); % Остановить получение видео