Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Glavni cilj teh navodil je pokazati, kako lahka bo obdelava slik s pomočjo MATLAB -a
Odkrivanje in sledenje obrazov je bilo pomembno in aktivno raziskovalno področje, zato bom razložil, kako je to mogoče storiti z Matlabom.
V naslednji vadnici bom naredil naslednje:
1. odkrivanje obrazov na sliki in štetje.
2. odkrivanje človeških oči na sliki in štetje.
3. odkrivanje človeških ust na sliki in štetje.
4. odkrivanje obrazov v videu in štetje.
5. odkrivanje človeških oči v videu in štetje.
6. odkrivanje človeških ust v videu in štetje.
1. korak: Zaznavanje obrazov na sliki in štetje
MATLAB Scenarij:
počisti vse % počisti vse predmeteclc % počisti zaslon
FDetect = vision. CascadeObjectDetector; %Odkrivanje predmetov z uporabo algoritma Viola-Jones
%Preberite vhodno sliko
image = imread ('c: / Deskotp / HarryPotter.jpg'); %naložite sliko z uporabo imread ('lokacija datoteke / ime.jpg')
BB = korak (FDetect, slika); %Vrne vrednosti mejnega okvirja glede na število predmetov
slika, imshow (I);
počakaj
za i = 1: velikost (BB, 1)
pravokotnik ('Position', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r-rdeča, g-zelena, b-modra
konec
naslov ('Odkrivanje obrazov'); %naslova številke off;
Rezultat bo podoben sliki, ki je bila priložena v tem koraku
Če želite šteti število zaznanih obrazov:
počisti vse % počisti vse predmeteclc % počisti zaslon
FDetect = vision. CascadeObjectDetector; %Odkrivanje predmetov z uporabo algoritma Viola-Jones %Preberite vhodno sliko
image = imread ('c: / Deskotp / HarryPotter.jpg'); %naložite sliko z uporabo imread ('lokacija datoteke / ime.jpg')
BB = korak (FDetect, slika); %Vrne vrednosti mejnega okvirja glede na število predmetov
slika,
imshow (I);
počakaj
za i = 1: velikost (BB, 1)
pravokotnik ('Position', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r-rdeča, g-zelena, b-modra
konec
text (10, 10, strcat ('\ color {red} Št. obrazov =', num2str (dolžina (BB)))); Ta vrstica prikazuje število
naslov ('Odkrivanje obrazov'); %naslov figure
počakaj;
2. korak: Zaznavanje človeških oči na sliki in štetje
MATLAB Scenarij:
Počisti vse;
clc;
%Za zaznavanje EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');
%Preberite vnos
image = imread ('c: / Deskotp / HarryPotter.jpg'); %naložite sliko z uporabo imread ('lokacija datoteke / ime.jpg')
BB = korak (EyeDetect, slika);
slika,
imshow (slika);
pravokotnik ('Position', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
naslov ('Odkrivanje oči');
Rezultat bo podoben sliki, ki je bila priložena v tem koraku
Če želite prešteti število zaznanih oči:
počisti vse; clc; %Za odkrivanje oči
EyeDetect = vision. CascadeObjectDetector ('EyePairBig');
image = imread ('c: / Deskotp / HarryPotter.jpg'); %naložite sliko z uporabo imread ('lokacija datoteke / ime.jpg')
BB = korak (EyeDetect, slika); slika, imshow (slika); pravokotnik ('Position', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
besedilo (10, 10, strcat ('\ color {rdeče} Št. oči =', num2str (dolžina (BB))));
naslov ('Odkrivanje oči');
3. korak: Zaznavanje človeških ust na sliki in štetje
MATLAB Scenarij:
Počisti vse;
clc;
%Za odkrivanje ust
MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16);
%Preberite vhodno sliko = imread ('c: / Deskotp / HarryPotter.jpg'); %naložite sliko z uporabo imread ('lokacija datoteke / ime.jpg')
BB = korak (MouthDetect, slika);
slika, imshow (slika);
počakaj
za i = 1: velikost (BB, 1)
pravokotnik ('Position', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
konec
naslov ('Zaznavanje ust');
počakaj;
Rezultat bo podoben sliki, ki je bila priložena v tem koraku
Če želite prešteti število zaznanih ust:
Počisti vse; clc; %Za odkrivanje ust
MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %Preberite vnos
image = imread ('c: / Deskotp / HarryPotter.jpg'); %naložite sliko z uporabo imread ('file location / name.jpg') BB = step (MouthDetect, image);
slika, imshow (slika);
počakaj
za i = 1: velikost (BB, 1)
pravokotnik ('Position', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
konec
besedilo (10, 10, strcat ('\ color {rdeče} Št. ust =', num2str (dolžina (BB))));
naslov ('Zaznavanje ust');
počakaj;
4. korak: Zaznavanje obrazov, oči, ust v videu in štetje
Počisti vse;
zaprite vse;
clc;
% Zajemite video okvirje s funkcijo video vhoda % Zamenjati morate ločljivost in ime nameščenega vmesnika.
a = vision. CascadeObjectDetector; %za zaznavanje obraza
% a = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %za odkrivanje ust
% a = vision. CascadeObjectDetector ('EyePairBig'); %za odkrivanje oči
%uporabljajte samo eno (obraz/oči/usta)
vid = videoinput ('winvideo', 1, 'yuy2_320x240'); % Nastavite lastnosti video predmeta
set (vid, 'FramesPerTrigger', Inf);
set (vid, 'ReturnedColorspace', 'rgb');
vid. FrameGrabInterval = 5; %začnite s pridobivanjem videa tukaj
start (vid) % Nastavite zanko, ki se ustavi po 100 sličicah
while (vid. FramesAcquired <= 200) % Pridobite posnetek trenutnega okvira
data = getsnapshot (vid);
imshow (podatki);
b = korak (a, podatki);
počakaj
za i = 1: velikost (b, 1)
pravokotnik ('position', b (i,:), 'linewidth', 2, 'linestyle', '-', 'EdgeColor', 'r');
konec
počakaj
text (10, 10, strcat ('\ color {green} Št. obrazov =', num2str (dolžina (b))));
konec
ustaviti (vid); % Ustavite pridobivanje videa