Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Glavni cilj ovih uputa je pokazati koliko će lako biti obrada slike uz pomoć MATLAB -a
Otkrivanje i praćenje lica bilo je važno i aktivno područje istraživanja, pa ću zato objasniti kako se to može učiniti s Matlabom.
U sljedećem vodiču ću napraviti sljedeće:
1. otkrivanje lica na slici i brojanje.
2. otkrivanje ljudskih očiju na slici i brojanje.
3. otkrivanje ljudskih usta na slici i brojanje.
4. otkrivanje lica u videu i brojanje.
5. otkrivanje ljudskih očiju u videu i brojanje.
6. otkrivanje ljudskih usta u videu i brojanje.
Korak 1: Otkrivanje lica na slici i brojanje
MATLAB SCRIPT:
clear all % clear all objectsclc % clear screen
FDetect = vision. CascadeObjectDetector; %Otkrivanje objekata pomoću Viola-Jonesovog algoritma
%Pročitajte ulaznu sliku
image = imread ('c: / Deskotp / HarryPotter.jpg'); %učitavanje slike pomoću imread ('lokacija datoteke / ime.jpg')
BB = korak (FDetect, slika); %Vraća vrijednosti okvira za ograničavanje na temelju broja objekata
lik, imshow (I);
drži se
za i = 1: veličina (BB, 1)
pravokutnik ('Pozicija', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -crveno, g-zeleno, b-plavo
kraj
naslov ('Otkrivanje lica'); %naslov brojčanika isključen;
Rezultat će biti poput slike koja je priložena u ovom koraku
Za brojanje broja otkrivenih lica:
clear all % clear all objectsclc % clear screen
FDetect = vision. CascadeObjectDetector; %Otkrivanje objekata pomoću Viola-Jonesovog algoritma %Pročitajte ulaznu sliku
image = imread ('c: / Deskotp / HarryPotter.jpg'); %učitavanje slike pomoću imread ('lokacija datoteke / ime.jpg')
BB = korak (FDetect, slika); %Vraća vrijednosti okvira za ograničavanje na temelju broja objekata
lik,
imshow (I);
drži se
za i = 1: veličina (BB, 1)
pravokutnik ('Pozicija', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -crveno, g-zeleno, b-plavo
kraj
text (10, 10, strcat ('\ color {red} Broj lica =', num2str (dužina (BB)))); Ova linija prikazuje broj
naslov ('Otkrivanje lica'); %naslov figure
odgađati;
Korak 2: Otkrivanje ljudskih očiju na slici i brojanje
MATLAB SCRIPT:
očistiti sve;
clc;
%Za otkrivanje EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');
%Pročitajte unos
image = imread ('c: / Deskotp / HarryPotter.jpg'); %učitavanje slike pomoću imread ('lokacija datoteke / ime.jpg')
BB = korak (EyeDetect, slika);
lik,
imshow (slika);
pravokutnik ('Pozicija', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
naslov ('Otkrivanje očiju');
Rezultat će biti poput slike koja je priložena u ovom koraku
Za brojanje broja otkrivenih očiju:
počisti sve; clc; %Za otkrivanje očiju
EyeDetect = vision. CascadeObjectDetector ('EyePairBig');
image = imread ('c: / Deskotp / HarryPotter.jpg'); %učitavanje slike pomoću imread ('lokacija datoteke / ime.jpg')
BB = korak (EyeDetect, slika); figura, imshow (slika); pravokutnik ('Pozicija', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
text (10, 10, strcat ('\ color {red} No of eyes =', num2str (length (BB))));
naslov ('Otkrivanje očiju');
Korak 3: Otkrivanje ljudskih usta na slici i brojanje
MATLAB SCRIPT:
očistiti sve;
clc;
%Za otkrivanje usta
MouthDetect = vision. CascadeObjectDetector ('Usta', 'MergeThreshold', 16);
%Pročitajte ulaznu sliku = imread ('c: / Deskotp / HarryPotter.jpg'); %učitavanje slike pomoću imread ('lokacija datoteke / ime.jpg')
BB = korak (MouthDetect, slika);
lik, imshow (slika);
drži se
za i = 1: veličina (BB, 1)
pravokutnik ('Pozicija', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
kraj
naslov ('Otkrivanje usta');
odgađati;
Rezultat će biti poput slike koja je priložena u ovom koraku
Za brojanje broja otkrivenih usta:
očistiti sve; clc; %Za otkrivanje usta
MouthDetect = vision. CascadeObjectDetector ('Usta', 'MergeThreshold', 16); %Pročitajte unos
image = imread ('c: / Deskotp / HarryPotter.jpg'); %učitavanje slike pomoću imread ('file location / name.jpg') BB = step (MouthDetect, image);
lik, imshow (slika);
drži se
za i = 1: veličina (BB, 1)
pravokutnik ('Pozicija', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
kraj
text (10, 10, strcat ('\ color {red} No of mouths', num2str (length (BB))));
naslov ('Otkrivanje usta');
odgađati;
Korak 4: Otkrivanje lica, očiju, usta u videu i brojanje
očistiti sve;
zatvori sve;
clc;
% Snimite video okvire pomoću funkcije video ulaza % Morate zamijeniti razlučivost i naziv instaliranog adaptera.
a = vision. CascadeObjectDetector; %za otkrivanje lica
% a = vision. CascadeObjectDetector ('Usta', 'MergeThreshold', 16); %za otkrivanje usta
% a = vision. CascadeObjectDetector ('EyePairBig'); %za otkrivanje očiju
%koristiti samo jednu (lice/oči/usta)
vid = videoinput ('winvideo', 1, 'yuy2_320x240'); % Postavite svojstva video objekta
set (vid, 'FramesPerTrigger', Inf);
set (vid, 'ReturnedColorspace', 'rgb');
vid. FrameGrabInterval = 5; %ovdje započinje akviziciju videozapisa
start (vid) % Postavite petlju koja se zaustavlja nakon 100 sličica snimanja
while (vid. FramesAcquired <= 200) % Dobijte snimku trenutnog okvira
data = getsnapshot (vid);
imshow (podaci);
b = korak (a, podaci);
drži se
za i = 1: veličina (b, 1)
pravokutnik ('position', b (i,:), 'linewidth', 2, 'linestyle', '-', 'EdgeColor', 'r');
kraj
odgađati
text (10, 10, strcat ('\ color {green} Broj lica =', num2str (length (b))));
kraj
zaustaviti (vid); % Zaustavite akviziciju videozapisa