Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Huvudsyftet med dessa instruktioner är att visa hur enkelt bildbehandlingen kommer att vara, med hjälp av MATLAB
Ansiktsigenkänning och spårning har varit ett viktigt och aktivt forskningsfält, så det är därför jag ska förklara hur det kan göras med Matlab.
I följande handledning ska jag göra följande saker:
1. upptäcka ansikten i en bild och räkna.
2. upptäcka mänskliga ögon i en bild och räkna.
3. upptäcka människans mun i en bild och räkna.
4. upptäcka ansikten i en video och räkna.
5. upptäcka mänskliga ögon i en video och räkna.
6. upptäcka människans mun i en video och räkna.
Steg 1: Upptäcka ansikten i en bild och räkna
MATLAB SCRIPT:
rensa alla % rensa alla objektsclc % rensa skärmen
FDetect = vision. CascadeObjectDetector; %Upptäck objekt med Viola-Jones-algoritmen
%Läs inmatningsbilden
image = imread ('c: / Deskotp / HarryPotter.jpg'); %ladda bilden med hjälp av imread ('filplats / namn.jpg')
BB = steg (FDetect, bild); %Returnerar gränsvärden för värden baserat på antalet objekt
figur, imshow (I);
vänta
för i = 1: storlek (BB, 1)
rektangel ('Position', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -röd, g-grön, b-blå
slutet
titel ('Ansiktsigenkänning'); %titel på siffran;
Resultatet blir som bilden som bifogades i detta steg själv
Så här räknar du antalet ansikten som detekteras:
rensa alla % rensa alla objektsclc % rensa skärmen
FDetect = vision. CascadeObjectDetector; %Upptäck objekt med Viola-Jones algoritm %Läs inmatningsbilden
image = imread ('c: / Deskotp / HarryPotter.jpg'); %ladda bilden med hjälp av imread ('filplats / namn.jpg')
BB = steg (FDetect, bild); %Returnerar gränsvärden för värden baserat på antalet objekt
figur,
imshow (I);
vänta
för i = 1: storlek (BB, 1)
rektangel ('Position', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -röd, g-grön, b-blå
slutet
text (10, 10, strcat ('\ color {red} Antal ansikten =', num2str (längd (BB)))); Denna rad ger dig räkningen
titel ('Ansiktsigenkänning'); %titel på figuren
vänta;
Steg 2: Detektera mänskliga ögon i en bild och räkna
MATLAB SCRIPT:
Rensa alla;
clc;
%Att upptäcka EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');
%Läs inmatningen
image = imread ('c: / Deskotp / HarryPotter.jpg'); %ladda bilden med hjälp av imread ('filplats / namn.jpg')
BB = steg (EyeDetect, bild);
figur,
imshow (bild);
rektangel ('Position', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
titel ('Eyes Detection');
Resultatet blir som bilden som bifogades i detta steg själv
Att räkna antalet upptäckta ögon:
rensa alla; clc; %För att upptäcka ögon
EyeDetect = vision. CascadeObjectDetector ('EyePairBig');
image = imread ('c: / Deskotp / HarryPotter.jpg'); %ladda bilden med hjälp av imread ('filplats / namn.jpg')
BB = steg (EyeDetect, bild); figur, imshow (bild); rektangel ('Position', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
text (10, 10, strcat ('\ color {red} Antal ögon =', num2str (längd (BB))));
titel ('Eyes Detection');
Steg 3: Detektera mänsklig mun i en bild och räkna
MATLAB SCRIPT:
Rensa alla;
clc;
%För att upptäcka mun
MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16);
%Läs inmatningsbilden = imread ('c: / Deskotp / HarryPotter.jpg'); %ladda bilden med hjälp av imread ('filplats / namn.jpg')
BB = steg (MouthDetect, bild);
figur, imshow (bild);
vänta
för i = 1: storlek (BB, 1)
rektangel ('Position', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
slutet
title ('Mouth Detection');
vänta;
Resultatet blir som bilden som bifogades i detta steg själv
Att räkna antalet upptäckta mun:
Rensa alla; clc; %För att upptäcka mun
MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %Läs inmatningen
image = imread ('c: / Deskotp / HarryPotter.jpg'); %ladda bilden med hjälp av imread ('file location / name.jpg') BB = step (MouthDetect, image);
figur, imshow (bild);
vänta
för i = 1: storlek (BB, 1)
rektangel ('Position', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
slutet
text (10, 10, strcat ('\ color {red} Antal mun =', num2str (längd (BB))));
title ('Mouth Detection');
vänta;
Steg 4: Upptäcka ansikten, ögon, mun i en video och räkna
Rensa alla;
Stäng alla;
clc;
% Fånga videoramar med videoingångsfunktionen % Du måste byta upplösning och ditt installerade adapternamn.
a = vision. CascadeObjectDetector; %för att upptäcka ansikte
% a = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %för att upptäcka munnen
% a = vision. CascadeObjectDetector ('EyePairBig'); %för att upptäcka ögon
%använder bara någon (ansikte/ögon/mun)
vid = videoinput ('winvideo', 1, 'yuy2_320x240'); % Ange egenskaperna för videoobjektet
set (vid, 'FramesPerTrigger', Inf);
set (vid, 'ReturnedColorspace', 'rgb');
vid. FrameGrabInterval = 5; %starta videoförvärvet här
start (vid) % Ställ in en loop som stannar efter 100 förvärvsramar
while (vid. FramesAcquired <= 200) % Få ögonblicksbilden av den aktuella ramen
data = getsnapshot (vid);
imshow (data);
b = steg (a, data);
vänta
för i = 1: storlek (b, 1)
rektangel ('position', b (i,:), 'linewidth', 2, 'linestyle', '-', 'EdgeColor', 'r');
slutet
vänta
text (10, 10, strcat ('\ color {grön} Antal ansikten =', num2str (längd (b))));
slutet
stopp (vid); % Stoppa videoinhämtningen