Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Scopul principal al acestor instructabile este de a arăta cât de ușor va fi procesarea imaginii, cu ajutorul MATLAB
Detectarea și urmărirea feței a fost un domeniu de cercetare important și activ, așa că de aceea voi explica cum se poate face cu Matlab.
În următorul tutorial voi face următoarele lucruri:
1. detectarea fețelor într-o imagine și numărarea.
2. detectarea ochilor umani într-o imagine și numărare.
3. detectarea gurii umane într-o imagine și numărare.
4. detectarea fețelor într-un videoclip și numărarea.
5. detectarea ochilor umani într-un videoclip și numărare.
6. detectarea gurii umane într-un videoclip și numărare.
Pasul 1: detectarea fețelor într-o imagine și numărare
SCRIPT MATLAB:
ștergeți toate% ștergeți toate obiectelesclc% ștergeți ecranul
FDetect = vision. CascadeObjectDetector; % Detectați obiecte folosind algoritmul Viola-Jones
% Citiți imaginea de intrare
image = imread ('c: / Deskotp / HarryPotter.jpg'); % încărcați imaginea utilizând imread ('locația fișierului / nume.jpg')
BB = pas (FDetect, imagine); % Returnează valorile Bounding Box pe baza numărului de obiecte
figura, imshow (I);
stai asa
pentru i = 1: dimensiune (BB, 1)
dreptunghi ('Poziție', BB (i,:), 'LinieLățime', 5, 'LinieStil', '-', 'EdgeColor', 'r'); % r-roșu, g-verde, b-albastru
Sfârșit
titlu („Detectarea feței”); % titlu al figurii off;
Rezultatul va fi ca imaginea care a fost atașată în acest pas în sine
Pentru a număra numărul fețelor detectate:
ștergeți toate% ștergeți toate obiectelesclc% ștergeți ecranul
FDetect = vision. CascadeObjectDetector; % Detectați obiecte utilizând algoritmul Viola-Jones% Citiți imaginea de intrare
image = imread ('c: / Deskotp / HarryPotter.jpg'); % încărcați imaginea utilizând imread ('locația fișierului / nume.jpg')
BB = pas (FDetect, imagine); % Returnează valorile Bounding Box pe baza numărului de obiecte
figura,
imshow (I);
stai asa
pentru i = 1: dimensiune (BB, 1)
dreptunghi ('Poziție', BB (i,:), 'LinieLățime', 5, 'LinieStil', '-', 'EdgeColor', 'r'); % r-roșu, g-verde, b-albastru
Sfârșit
text (10, 10, strcat ('\ color {red} No of faces =', num2str (length (BB)))); Această linie vă oferă numărul
titlu („Detectarea feței”); % titlu al figurii
aștepta;
Pasul 2: detectarea ochilor umani într-o imagine și numărare
SCRIPT MATLAB:
curata tot;
clc;
% Pentru a detecta EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');
% Citiți intrarea
image = imread ('c: / Deskotp / HarryPotter.jpg'); % încărcați imaginea utilizând imread ('locația fișierului / nume.jpg')
BB = pas (EyeDetect, imagine);
figura,
imshow (imagine);
dreptunghi ('Poziție', BB, 'LinieLățime', 4, 'LinieStil', '-', 'EdgeColor', 'b');
titlu („Detectarea ochilor”);
Rezultatul va fi ca imaginea care a fost atașată în acest pas în sine
Pentru a număra numărul de ochi detectați:
ștergeți toate; clc; % Pentru a detecta Ochii
EyeDetect = vision. CascadeObjectDetector („EyePairBig”);
image = imread ('c: / Deskotp / HarryPotter.jpg'); % încărcați imaginea utilizând imread ('locația fișierului / nume.jpg')
BB = pas (EyeDetect, imagine); figura, imshow (imagine); dreptunghi ('Poziție', BB, 'LinieLățime', 4, 'LinieStil', '-', 'EdgeColor', 'b');
text (10, 10, strcat ('\ color {red} No of eyes =', num2str (length (BB))));
titlu („Detectarea ochilor”);
Pasul 3: detectarea gurii umane într-o imagine și numărare
SCRIPT MATLAB:
curata tot;
clc;
% Pentru a detecta Gura
MouthDetect = vision. CascadeObjectDetector („Gură”, „MergeThreshold”, 16);
% Citiți imaginea de intrare = imread ('c: / Deskotp / HarryPotter.jpg'); % încărcați imaginea utilizând imread ('locația fișierului / nume.jpg')
BB = pas (MouthDetect, imagine);
figura, imshow (imagine);
stai asa
pentru i = 1: dimensiune (BB, 1)
dreptunghi ('Poziție', BB (i,:), 'LinieLățime', 4, 'LinieStil', '-', 'EdgeColor', 'r');
Sfârșit
titlu („Detectarea gurii”);
aștepta;
Rezultatul va fi ca imaginea care a fost atașată în acest pas în sine
Pentru a număra numărul de Gură detectată:
curata tot; clc; % Pentru a detecta Gura
MouthDetect = vision. CascadeObjectDetector („Gură”, „MergeThreshold”, 16); % Citiți intrarea
image = imread ('c: / Deskotp / HarryPotter.jpg'); % încărcați imaginea utilizând imread ('locația fișierului / nume.jpg') BB = step (MouthDetect, imagine);
figura, imshow (imagine);
stai asa
pentru i = 1: dimensiune (BB, 1)
dreptunghi ('Poziție', BB (i,:), 'LinieLățime', 4, 'LinieStil', '-', 'EdgeColor', 'r');
Sfârșit
text (10, 10, strcat ('\ color {red} Număr de guri =', num2str (lungime (BB))));
titlu („Detectarea gurii”);
aștepta;
Pasul 4: detectarea fețelor, ochilor, gurii într-un videoclip și numărarea
curata tot;
inchide tot;
clc;
% Capturați cadrele video utilizând funcția de intrare video% Trebuie să înlocuiți rezoluția și numele adaptorului instalat.
a = vision. CascadeObjectDetector; % pentru a detecta fața
% a = vision. CascadeObjectDetector ('Gură', 'MergeThreshold', 16); % pentru a detecta gura
% a = vision. CascadeObjectDetector ('EyePairBig'); % pentru a detecta ochii
% folosiți oricine (față / ochi / gură)
vid = videoinput ('winvideo', 1, 'yuy2_320x240'); % Setați proprietățile obiectului video
set (vid, 'FramesPerTrigger', Inf);
set (vid, 'ReturnedColorspace', 'rgb');
vid. FrameGrabInterval = 5; % începeți achiziția video aici
start (vid)% Setați o buclă care se oprește după 100 de cadre de achiziție
while (vid. FramesAcquired <= 200)% Obține instantaneul cadrului curent
date = getsnapshot (vid);
imshow (date);
b = pas (a, date);
stai asa
pentru i = 1: dimensiune (b, 1)
dreptunghi ('poziție', b (i,:), 'lățime de linie', 2, 'linestyle', '-', 'EdgeColor', 'r');
Sfârșit
stai departe
text (10, 10, strcat ('\ color {green} No of faces =', num2str (length (b))));
Sfârșit
stop (vid); % Opriți achiziția video