Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Pagrindinis šios instrukcijos tikslas yra parodyti, kaip lengva bus apdoroti vaizdus, naudojant MATLAB
Veido aptikimas ir stebėjimas buvo svarbi ir aktyvi tyrimų sritis, todėl aš paaiškinsiu, kaip tai galima padaryti naudojant „Matlab“.
Šioje pamokoje aš atliksiu šiuos dalykus:
1. veidų aptikimas vaizde ir skaičiavimas.
2. žmogaus akių aptikimas vaizde ir skaičiavimas.
3. žmogaus burnos aptikimas vaizde ir skaičiavimas.
4. veidų aptikimas vaizdo įraše ir skaičiavimas.
5. žmogaus akių aptikimas vaizdo įraše ir skaičiavimas.
6. žmogaus burnos aptikimas vaizdo įraše ir skaičiavimas.
1 žingsnis: veidų aptikimas vaizde ir skaičiavimas
MATLAB SCRIPT:
išvalyti visus % išvalyti visus objektusclc % išvalyti ekraną
FDetect = regėjimas. CascadeObjectDetector; %Aptikti objektus naudojant Viola-Jones algoritmą
%Skaityti įvesties vaizdą
image = imread ('c: / Deskotp / HarryPotter.jpg'); %įkelti vaizdą naudojant imread ('failo vieta / name.jpg')
BB = žingsnis (FDetect, vaizdas); Grąžina ribojimo langelio vertes pagal objektų skaičių
figūra, imshow (I);
palauk
i = 1: dydis (BB, 1)
stačiakampis ('Position', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r-raudona, g-žalia, b-mėlyna
galas
pavadinimas („Veido aptikimas“); %paveikslo pavadinimas išjungtas;
Rezultatas bus panašus į vaizdą, kuris buvo pridėtas atliekant šį veiksmą
Norėdami suskaičiuoti aptiktų veidų skaičių:
išvalyti visus % išvalyti visus objektusclc % išvalyti ekraną
FDetect = regėjimas. CascadeObjectDetector; %Aptikti objektus naudojant Viola-Jones algoritmą %Skaityti įvesties vaizdą
image = imread ('c: / Deskotp / HarryPotter.jpg'); %įkelti vaizdą naudojant imread ('failo vieta / name.jpg')
BB = žingsnis (FDetect, vaizdas); Grąžina ribojimo langelio vertes pagal objektų skaičių
figūra,
imshow (I);
palauk
i = 1: dydis (BB, 1)
stačiakampis ('Position', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r-raudona, g-žalia, b-mėlyna
galas
text (10, 10, strcat ('\ color {red} Veidų skaičius =', num2str (ilgis (BB)))); Ši eilutė suteikia jums skaičių
pavadinimas („Veido aptikimas“); %paveikslo pavadinimas
susilaikyti;
2 žingsnis: žmogaus akių aptikimas vaizde ir skaičiavimas
MATLAB SCRIPT:
Išvalyti viską;
clc;
%EyesEyeDetect aptikti = regėjimas. CascadeObjectDetector ('EyePairBig');
%Perskaitykite įvestį
image = imread ('c: / Deskotp / HarryPotter.jpg'); %įkelti vaizdą naudojant imread ('failo vieta / name.jpg')
BB = žingsnis („EyeDetect“, vaizdas);
figūra,
imshow (vaizdas);
stačiakampis ('Position', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
pavadinimas („Akių aptikimas“);
Rezultatas bus panašus į vaizdą, kuris buvo pridėtas atliekant šį veiksmą
Norėdami suskaičiuoti aptiktų akių skaičių:
išvalyti viską; clc; %Norėdami aptikti akis
EyeDetect = regėjimas. CascadeObjectDetector ('EyePairBig');
image = imread ('c: / Deskotp / HarryPotter.jpg'); %įkelti vaizdą naudojant imread ('failo vieta / name.jpg')
BB = žingsnis („EyeDetect“, vaizdas); figūra, „imshow“(vaizdas); stačiakampis ('Position', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
tekstas (10, 10, strcat ('\ color {red} akių skaičius =', num2str (ilgis (BB))));
pavadinimas („Akių aptikimas“);
3 žingsnis: žmogaus burnos aptikimas vaizde ir skaičiavimas
MATLAB SCRIPT:
Išvalyti viską;
clc;
%Norėdami aptikti burną
MouthDetect = regėjimas. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16);
%Skaitykite įvesties vaizdą = imread ('c: / Deskotp / HarryPotter.jpg'); %įkelti vaizdą naudojant imread ('failo vieta / name.jpg')
BB = žingsnis (MouthDetect, vaizdas);
figūra, imshow (vaizdas);
palauk
i = 1: dydis (BB, 1)
stačiakampis ('Position', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
galas
pavadinimas („Burnos aptikimas“);
susilaikyti;
Rezultatas bus panašus į vaizdą, kuris buvo pridėtas atliekant šį veiksmą
Norėdami suskaičiuoti aptiktą burnos ertmę:
Išvalyti viską; clc; %Norėdami aptikti burną
MouthDetect = regėjimas. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %Perskaitykite įvestį
image = imread ('c: / Deskotp / HarryPotter.jpg'); %įkelti paveikslėlį naudojant imread ('failo vieta / name.jpg') BB = žingsnis (MouthDetect, vaizdas);
figūra, imshow (vaizdas);
palauk
i = 1: dydis (BB, 1)
stačiakampis ('Position', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
galas
text (10, 10, strcat ('\ color {red} Burnų skaičius =', num2str (ilgis (BB))));
pavadinimas („Burnos aptikimas“);
susilaikyti;
4 žingsnis: veidų, akių, burnos aptikimas vaizdo įraše ir skaičiavimas
Išvalyti viską;
uždaryti viską;
clc;
% Fiksuokite vaizdo kadrus naudodami vaizdo įvesties funkciją % Turite pakeisti skiriamąją gebą ir įdiegto adapterio pavadinimą.
a = regėjimas. CascadeObjectDetector; %veidui aptikti
% a = vizija. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %aptikti burną
% a = regėjimas. CascadeObjectDetector ('EyePairBig'); %aptikti akis
%naudoja tik vieną (veidą/akis/burną)
vid = vaizdo įvestis ('winvideo', 1, 'yuy2_320x240'); % Nustatykite vaizdo objekto savybes
rinkinys (vid, 'FramesPerTrigger', Inf);
set (vid, „ReturnedColorspace“, „rgb“);
vid. FrameGrabInterval = 5; %pradėti vaizdo įrašų rinkimą čia
start (vid) % Nustatykite ciklą, kuris sustoja po 100 kadrų
while (vid. FramesAcquired <= 200) % Gaukite dabartinio kadro momentinę nuotrauką
duomenys = momentinis vaizdas (vid);
„imshow“(duomenys);
b = žingsnis (a, duomenys);
palauk
i = 1: dydis (b, 1)
stačiakampis ('pozicija', b (i,:), 'linijos plotis', 2, 'linestyle', '-', 'EdgeColor', 'r');
galas
susilaikyti
text (10, 10, strcat ('\ color {green} Veidų skaičius =', num2str (ilgis (b))));
galas
stop (vid); % Sustabdyti vaizdo įrašų gavimą