Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Glavni cilj ovih instrukcija je pokazati koliko će lako biti obrada slike uz pomoć MATLAB -a
Otkrivanje i praćenje lica bilo je važno i aktivno polje 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:
obriši sve % očisti sve objekteclc % očisti ekran
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 ('file location / name.jpg')
BB = korak (FDetect, slika); %Vraća vrijednosti graničnog okvira na osnovu broja objekata
figura, imshow (I);
Čekaj
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
Da biste prebrojili broj otkrivenih lica:
obriši sve % očisti sve objekteclc % očisti ekran
FDetect = vision. CascadeObjectDetector; %Otkrivanje objekata pomoću Viola-Jones algoritma %Pročitajte ulaznu sliku
image = imread ('c: / Deskotp / HarryPotter.jpg'); %učitavanje slike pomoću imread ('file location / name.jpg')
BB = korak (FDetect, slika); %Vraća vrijednosti graničnog okvira na osnovu broja objekata
figura,
imshow (I);
Čekaj
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 vam daje broj
naslov ('Otkrivanje lica'); %naslov figure
zadržati;
Korak 2: Otkrivanje ljudskih očiju na slici i brojanje
MATLAB SCRIPT:
obriši sve;
clc;
%Za otkrivanje EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');
%Pročitajte unos
image = imread ('c: / Deskotp / HarryPotter.jpg'); %učitavanje slike pomoću imread ('file location / name.jpg')
BB = korak (EyeDetect, slika);
figura,
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:
obriši sve; clc; %Za otkrivanje očiju
EyeDetect = vision. CascadeObjectDetector ('EyePairBig');
image = imread ('c: / Deskotp / HarryPotter.jpg'); %učitavanje slike pomoću imread -a ('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:
obriši 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 -a ('lokacija datoteke / ime.jpg')
BB = korak (MouthDetect, slika);
figura, imshow (slika);
Čekaj
za i = 1: veličina (BB, 1)
pravokutnik ('Pozicija', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
kraj
naslov ('Otkrivanje usta');
zadržati;
Rezultat će biti poput slike koja je priložena u ovom koraku
Za brojanje broja otkrivenih usta:
obriši 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);
figura, imshow (slika);
Čekaj
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');
zadržati;
Korak 4: Otkrivanje lica, očiju, usta u videu i brojanje
obriši sve;
zatvori sve;
clc;
% Snimite video okvire pomoću funkcije video ulaza % Morate zamijeniti rezoluciju 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
%koristite 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činju akviziciju videozapisa
start (vid) % Postavite petlju koja se zaustavlja nakon 100 sličica akvizicije
while (vid. FramesAcquired <= 200) % Dobijte snimak trenutnog okvira
data = getsnapshot (vid);
imshow (podaci);
b = korak (a, podaci);
Čekaj
za i = 1: veličina (b, 1)
pravokutnik ('position', b (i,:), 'linewidth', 2, 'linestyle', '-', 'EdgeColor', 'r');
kraj
izdrži
text (10, 10, strcat ('\ color {green} Broj lica =', num2str (dužina (b))));
kraj
stop (vid); % Zaustavite akviziciju video zapisa