Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Tämän ohjeen päätavoite on näyttää, kuinka helppoa kuvankäsittely on, MATLABin avulla
Kasvojentunnistus ja -seuranta on ollut tärkeä ja aktiivinen tutkimusala, joten selitän, miten se voidaan tehdä Matlabin avulla.
Seuraavassa opetusohjelmassa aion tehdä seuraavat asiat:
1. kasvojen havaitseminen kuvassa ja laskeminen.
2. ihmisen silmien havaitseminen kuvassa ja laskeminen.
3. ihmisen suun tunnistaminen kuvasta ja laskeminen.
4. kasvojen havaitseminen videossa ja laskeminen.
5. ihmisen silmien havaitseminen videossa ja laskeminen.
6. ihmisen suun tunnistaminen videossa ja laskeminen.
Vaihe 1: Kasvojen havaitseminen kuvassa ja laskeminen
MATLAB -käsikirjoitus:
tyhjennä kaikki % tyhjennä kaikki objektit clc % tyhjennä näyttö
FDetect = visio. CascadeObjectDetector; %Havaitse esineitä Viola-Jones-algoritmin avulla
%Lue syötetty kuva
image = imread ('c: / Deskotp / HarryPotter.jpg'); %lataa kuva käyttämällä imreadia ('tiedoston sijainti / nimi.jpg')
BB = vaihe (FDetect, kuva); %Palauttaa rajauslaatikon arvot objektien lukumäärän perusteella
kuvio, imshow (I);
pidä kiinni
i = 1: koko (BB, 1)
suorakulmio ('Position', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -punainen, g-vihreä, b-sininen
loppuun
otsikko ('Kasvontunnistus'); %hahmon otsikko pois;
Tulos on samanlainen kuin tässä vaiheessa liitetty kuva
Voit laskea havaittujen kasvojen määrän seuraavasti:
tyhjennä kaikki % tyhjennä kaikki objektit clc % tyhjennä näyttö
FDetect = visio. CascadeObjectDetector; %Tunnista kohteet Viola-Jones-algoritmin avulla %Lue syöttökuva
image = imread ('c: / Deskotp / HarryPotter.jpg'); %lataa kuva käyttämällä imreadia ('tiedoston sijainti / nimi.jpg')
BB = vaihe (FDetect, kuva); %Palauttaa rajauslaatikon arvot objektien lukumäärän perusteella
kuvio,
imshow (I);
pidä kiinni
i = 1: koko (BB, 1)
suorakulmio ('Position', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -punainen, g-vihreä, b-sininen
loppuun
text (10, 10, strcat ('\ color {red} Kasvojen määrä =', num2str (pituus (BB)))); Tämä rivi antaa sinulle lukumäärän
otsikko ('Kasvontunnistus'); %otsikko kuvasta
pitää loitolla;
Vaihe 2: Ihmisten silmien havaitseminen kuvasta ja laskeminen
MATLAB -käsikirjoitus:
Tyhjennä;
clc;
%EyesEyeDetectin havaitseminen = vision. CascadeObjectDetector ('EyePairBig');
%Lue syöttö
image = imread ('c: / Deskotp / HarryPotter.jpg'); %lataa kuva käyttämällä imreadia ('tiedoston sijainti / nimi.jpg')
BB = vaihe (EyeDetect, kuva);
kuvio,
imshow (kuva);
suorakulmio ('Position', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
otsikko ('Silmien tunnistus');
Tulos on samanlainen kuin tässä vaiheessa liitetty kuva
Havaittujen silmien lukumäärän laskeminen:
tyhjennä kaikki; clc; %Silmien havaitsemiseksi
EyeDetect = visio. CascadeObjectDetector ('EyePairBig');
image = imread ('c: / Deskotp / HarryPotter.jpg'); %lataa kuva käyttämällä imreadia ('tiedoston sijainti / nimi.jpg')
BB = askel (EyeDetect, kuva); kuvio, imshow (kuva); suorakulmio ('Position', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
text (10, 10, strcat ('\ color {red} Silmien määrä =', num2str (pituus (BB))));
otsikko ('Silmien tunnistus');
Vaihe 3: Ihmisen suun tunnistaminen kuvasta ja laskeminen
MATLAB -käsikirjoitus:
Tyhjennä;
clc;
%Suun tunnistaminen
MouthDetect = visio. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16);
%Lue syötetty kuva = imread ('c: / Deskotp / HarryPotter.jpg'); %lataa kuva käyttämällä imreadia ('tiedoston sijainti / nimi.jpg')
BB = askel (MouthDetect, kuva);
kuva, imshow (kuva);
pidä kiinni
i = 1: koko (BB, 1)
suorakulmio ('Position', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
loppuun
otsikko ('Suun tunnistus');
pitää loitolla;
Tulos on samanlainen kuin tässä vaiheessa liitetty kuva
Laskettujen suun lukumäärä:
Tyhjennä; clc; %Suun tunnistaminen
MouthDetect = visio. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %Lue syöttö
image = imread ('c: / Deskotp / HarryPotter.jpg'); %lataa kuva käyttämällä imreadia ('tiedoston sijainti / nimi.jpg') BB = askel (MouthDetect, kuva);
kuva, imshow (kuva);
pidä kiinni
i = 1: koko (BB, 1)
suorakulmio ('Position', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
loppuun
text (10, 10, strcat ('\ color {red} Suun määrä =', num2str (pituus (BB))));
otsikko ('Suun tunnistus');
pitää loitolla;
Vaihe 4: Kasvojen, silmien, suun tunnistaminen videosta ja laskeminen
Tyhjennä;
sulje kaikki;
clc;
% Ota videokehykset videotulotoiminnolla % Sinun on vaihdettava resoluutio ja asennetun sovittimen nimi.
a = visio. CascadeObjectDetector; %kasvojen tunnistamiseen
% a = visio. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %suun tunnistamiseksi
% a = visio. CascadeObjectDetector ('EyePairBig'); %tunnistaa silmät
%käyttää vain yhtä (kasvot/silmät/suu)
vid = videosyöttö ('winvideo', 1, 'yuy2_320x240'); % Aseta video -objektin ominaisuudet
set (vid, 'FramesPerTrigger', Inf);
set (vid, 'ReturnedColorspace', 'rgb');
vid. FrameGrabInterval = 5; %aloita videon hankinta tästä
start (vid) % Aseta silmukka, joka pysähtyy 100 kuvan oton jälkeen
while (vid. FramesAcquired <= 200) % Hae tilannekuva nykyisestä kehyksestä
data = otoskuva (vid);
imshow (data);
b = vaihe (a, data);
pidä kiinni
i = 1: koko (b, 1)
suorakulmio ('position', b (i,:), 'linewidth', 2, 'linestyle', '-', 'EdgeColor', 'r');
loppuun
pitää loitolla
text (10, 10, strcat ('\ väri {vihreä} Kasvojen määrä =', numero2str (pituus (b))));
loppuun
stop (vid); % Lopeta videon hankinta