Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Het belangrijkste doel van deze instructables is om te laten zien hoe gemakkelijk de beeldverwerking zal zijn, met behulp van MATLAB
Gezichtsdetectie en -tracking is een belangrijk en actief onderzoeksveld geweest, daarom ga ik uitleggen hoe het kan met het Matlab.
In de volgende tutorial ga ik de onderstaande dingen doen:
1. gezichten in een afbeelding detecteren en tellen.
2. menselijke ogen detecteren in een afbeelding en tellen.
3. menselijke mond detecteren in een afbeelding en tellen.
4. gezichten detecteren in een video en tellen.
5. menselijke ogen detecteren in een video en tellen.
6. menselijke mond detecteren in een video en tellen.
Stap 1: Gezichten in een afbeelding detecteren en tellen
MATLAB-SCRIPT:
alles wissen % alle objecten wissenclc %scherm wissen
FDetect = visie. CascadeObjectDetector; %Detecteer objecten met behulp van het Viola-Jones-algoritme
%Lees de invoerafbeelding
afbeelding = imread('c:\Deskotp\HarryPotter.jpg'); %laad de afbeelding met imread('file location\name.jpg')
BB = stap (FDetect, afbeelding); %Retourneert Bounding Box-waarden op basis van het aantal objecten
figuur, imshow(I);
vasthouden
voor i = 1: maat (BB, 1)
rechthoek('Positie', BB(i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -rood, g-groen, b-blauw
einde
title('Gezichtsdetectie'); %titel van de figuur afhouden;
Het resultaat zal zijn zoals de afbeelding die in deze stap zelf is bijgevoegd
Het aantal gedetecteerde gezichten tellen:
alles wissen % alle objecten wissenclc %scherm wissen
FDetect = visie. CascadeObjectDetector; %Detecteer objecten met behulp van het Viola-Jones-algoritme %Lees de invoerafbeelding
afbeelding = imread('c:\Deskotp\HarryPotter.jpg'); %laad de afbeelding met imread('file location\name.jpg')
BB = stap (FDetect, afbeelding); %Retourneert Bounding Box-waarden op basis van het aantal objecten
figuur,
imshow(ik);
vasthouden
voor i = 1: maat (BB, 1)
rechthoek('Positie', BB(i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -rood, g-groen, b-blauw
einde
text(10, 10, strcat('\color{red} Aantal vlakken =', num2str(length(BB)))); Deze regel geeft je de telling
title('Gezichtsdetectie'); %titel van de figuur
wacht af;
Stap 2: Menselijke ogen detecteren in een afbeelding en tellen
MATLAB-SCRIPT:
wis alles;
clc;
%Om EyesEyeDetect = vision te detecteren. CascadeObjectDetector('EyePairBig');
%Lees de invoer
afbeelding = imread('c:\Deskotp\HarryPotter.jpg'); %laad de afbeelding met imread('file location\name.jpg')
BB=stap (Oogdetectie, afbeelding);
figuur,
imshow(afbeelding);
rechthoek('Positie', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
title('Ogendetectie');
Het resultaat zal zijn zoals de afbeelding die in deze stap zelf is bijgevoegd
Het aantal gedetecteerde ogen tellen:
alles wissen;clc; %Ogen detecteren
EyeDetect = visie. CascadeObjectDetector('EyePairBig');
afbeelding = imread('c:\Deskotp\HarryPotter.jpg'); %laad de afbeelding met imread('file location\name.jpg')
BB=step(Oogdetectie, afbeelding);figuur, imshow(afbeelding); rechthoek('Positie', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
text(10, 10, strcat('\color{red} No of eyes =', num2str(length(BB))));
title('Ogendetectie');
Stap 3: Menselijke mond detecteren in een afbeelding en tellen
MATLAB-SCRIPT:
wis alles;
clc;
%Om mond te detecteren
MouthDetect = vision. CascadeObjectDetector('Mouth', 'MergeThreshold', 16);
%Lees de invoerafbeelding = imread('c:\Deskotp\HarryPotter.jpg'); %laad de afbeelding met imread('file location\name.jpg')
BB=stap (Monddetectie, afbeelding);
figuur, imshow(afbeelding);
vasthouden
voor i = 1: maat (BB, 1)
rechthoek('Positie', BB(i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
einde
title('Monddetectie');
wacht af;
Het resultaat zal zijn zoals de afbeelding die in deze stap zelf is bijgevoegd
Het aantal gedetecteerde monden tellen:
wis alles; clc; %Om mond te detecteren
MouthDetect = vision. CascadeObjectDetector('Mouth', 'MergeThreshold', 16); %Lees de invoer
afbeelding = imread('c:\Deskotp\HarryPotter.jpg'); %laad de afbeelding met imread('file location\name.jpg') BB=step(MouthDetect, image);
figuur, imshow(afbeelding);
vasthouden
voor i = 1: maat (BB, 1)
rechthoek('Positie', BB(i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
einde
text(10, 10, strcat('\color{red} Aantal monden =', num2str(length(BB))));
title('Monddetectie');
wacht af;
Stap 4: Gezichten, ogen, mond detecteren in een video en tellen
wis alles;
sluit alles;
clc;
% Leg de videoframes vast met de video-invoerfunctie % U moet de resolutie en de naam van uw geïnstalleerde adapter vervangen.
a=vision. CascadeObjectDetector; %om gezicht te detecteren
% a=vision. CascadeObjectDetector('Mouth', 'MergeThreshold', 16); %om mond te detecteren
% a=vision. CascadeObjectDetector('EyePairBig'); %om ogen te detecteren
%gebruik alleen een (gezicht/ogen/mond)
vid = video-invoer ('winvideo', 1, 'yuy2_320x240'); % Stel de eigenschappen van het video-object in
set(vid, 'FramesPerTrigger', Inf);
set(vid, 'ReturnedColorspace', 'rgb');
vid. FrameGrabInterval = 5; %start de video-acquisitie hier
start(vid) % Stel een lus in die stopt na 100 frames van acquisitie
while(vid. FramesAcquired<=200) % Haal de momentopname van het huidige frame op
data = krijgtnapshot(vid);
imshow(gegevens);
b=stap(a, gegevens);
vasthouden
voor i=1:maat(b, 1)
rechthoek('position', b(i,:), 'linewidth', 2, 'linestyle', '-', 'EdgeColor', 'r');
einde
wacht af
text(10, 10, strcat('\color{green} Aantal vlakken =', num2str(length(b))));
einde
stop(video); % Stop de video-acquisitie