Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Hlavním cílem tohoto návodu je ukázat, jak snadné bude zpracování obrazu, s pomocí MATLABu
Detekce a sledování obličeje je důležitou a aktivní oblastí výzkumu, a proto vysvětlím, jak to lze s Matlabem provést.
V následujícím tutoriálu udělám následující věci:
1. detekce tváří na obrázku a počítání.
2. detekce lidských očí v obraze a počítání.
3. detekce lidských úst na obrázku a počítání.
4. detekce tváří ve videu a počítání.
5. detekce lidských očí ve videu a počítání.
6. detekce lidských úst ve videu a počítání.
Krok 1: Detekce tváří na obrázku a počítání
MATLAB SCRIPT:
clear all % clear all objectsclc % clear screen
FDetect = vision. CascadeObjectDetector; %Detekovat objekty pomocí Viola-Jonesova algoritmu
%Přečtěte si vstupní obrázek
image = imread ('c: / Deskotp / HarryPotter.jpg'); %načtěte obrázek pomocí imread ('umístění souboru / name.jpg')
BB = krok (FDetect, obrázek); %Vrací hodnoty ohraničujícího rámečku podle počtu objektů
postava, imshow (I);
vydrž
pro i = 1: velikost (BB, 1)
obdélník ('Position', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -červená, g-zelená, b-modrá
konec
title ('Face Detection'); %titulu z držby;
Výsledek bude jako obrázek, který byl připojen v tomto samotném kroku
Chcete -li spočítat počet detekovaných obličejů:
clear all % clear all objectsclc % clear screen
FDetect = vision. CascadeObjectDetector; %Detekovat objekty pomocí Viola-Jonesova algoritmu %Přečíst vstupní obrázek
image = imread ('c: / Deskotp / HarryPotter.jpg'); %načtěte obrázek pomocí imread ('umístění souboru / name.jpg')
BB = krok (FDetect, obrázek); %Vrátí hodnoty ohraničujícího rámečku podle počtu objektů
postava,
imshow (I);
vydrž
pro i = 1: velikost (BB, 1)
obdélník ('Position', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -červená, g-zelená, b-modrá
konec
text (10, 10, strcat ('\ color {red} Počet tváří =', num2str (délka (BB)))); Tento řádek vám počítá
title ('Face Detection'); %název obrázku
vydržet;
Krok 2: Detekce lidských očí na obrázku a počítání
MATLAB SCRIPT:
vymazat vše;
clc;
%Pro detekci EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');
%Přečíst vstup
image = imread ('c: / Deskotp / HarryPotter.jpg'); %načtěte obrázek pomocí imread ('umístění souboru / name.jpg')
BB = krok (EyeDetect, obrázek);
postava,
imshow (obrázek);
obdélník ('Position', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
název ('Detekce očí');
Výsledek bude stejný jako obrázek, který byl připojen v tomto samotném kroku
Chcete -li spočítat počet detekovaných očí:
vymazat vše; clc; %Pro detekci očí
EyeDetect = vision. CascadeObjectDetector ('EyePairBig');
image = imread ('c: / Deskotp / HarryPotter.jpg'); %načtěte obrázek pomocí imread ('umístění souboru / name.jpg')
BB = krok (EyeDetect, obrázek); figura, imshow (obrázek); obdélník ('Position', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
text (10, 10, strcat ('\ color {red} No of eyes =', num2str (délka (BB))));
název ('Detekce očí');
Krok 3: Detekce lidské tlamy na obrázku a počítání
MATLAB SCRIPT:
vymazat vše;
clc;
%Pro detekci úst
MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16);
%Přečíst vstupní obrázek = imread ('c: / Deskotp / HarryPotter.jpg'); %načtěte obrázek pomocí imread ('umístění souboru / name.jpg')
BB = krok (MouthDetect, obrázek);
postava, imshow (obrázek);
vydrž
pro i = 1: velikost (BB, 1)
obdélník ('Position', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
konec
title ('Detekce úst');
vydržet;
Výsledek bude stejný jako obrázek, který byl připojen v tomto samotném kroku
Chcete -li spočítat počet detekovaných úst:
vymazat vše; clc; %Pro detekci úst
MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %Přečíst vstup
image = imread ('c: / Deskotp / HarryPotter.jpg'); %načíst obrázek pomocí imread ('umístění souboru / name.jpg') BB = krok (MouthDetect, obrázek);
postava, imshow (obrázek);
vydrž
pro i = 1: velikost (BB, 1)
obdélník ('Position', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
konec
text (10, 10, strcat ('\ color {red} Počet úst =', num2str (délka (BB))));
title ('Detekce úst');
vydržet;
Krok 4: Detekce tváří, očí, úst ve videu a počítání
vymazat vše;
zavřít vše;
clc;
% Zachyťte video snímky pomocí funkce vstupu videa % Musíte nahradit rozlišení a název nainstalovaného adaptéru.
a = vision. CascadeObjectDetector; %k detekci tváře
% a = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %k detekci úst
% a = vision. CascadeObjectDetector ('EyePairBig'); %k detekci očí
%použijte pouze jeden (obličej/oči/ústa)
vid = videoinput ('winvideo', 1, 'yuy2_320x240'); % Nastavte vlastnosti video objektu
sada (vid, 'FramesPerTrigger', Inf);
set (vid, 'ReturnedColorspace', 'rgb');
vid. FrameGrabInterval = 5; %spusťte akvizici videa zde
start (vid) % Nastavte smyčku, která se zastaví po 100 rámcích akvizice
while (vid. FramesAcquired <= 200) % Získejte snímek aktuálního rámce
data = getsnapshot (vid);
imshow (data);
b = krok (a, data);
vydrž
pro i = 1: velikost (b, 1)
obdélník ('pozice', b (i,:), 'šířka čáry', 2, 'linestyle', '-', 'EdgeColor', 'r');
konec
vydrž
text (10, 10, strcat ('\ color {green} Počet tváří =', num2str (délka (b))));
konec
stop (vid); % Zastavte pořizování videa