Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Ang pangunahing layunin ng mga itinuturo na ito ay upang maipakita kung gaano kadali, ang pagpoproseso ng imahe ay magiging, Sa tulong ng MATLAB
Ang pagtuklas sa mukha at pagsubaybay ay naging isang mahalaga at aktibong larangan ng pagsasaliksik, kaya't ipapaliwanag ko kung paano ito magagawa sa Matlab.
Sa sumusunod na tutorial gagawin ko ang mga bagay sa ibaba:
1. pagkakita ng mga mukha sa isang imahe at pagbibilang.
2. pagkakita ng mga mata ng tao sa isang imahe at pagbibilang.
3. pagkakita ng bibig ng tao sa isang imahe at pagbibilang.
4. pagkakita ng mga mukha sa isang Video at pagbibilang.
5. pagkakita ng mga mata ng tao sa isang Video at pagbibilang.
6. pagtuklas ng bibig ng tao sa isang Video at pagbibilang.
Hakbang 1: Pagtuklas ng Mga Mukha sa isang Imahe at Pagbibilang
MATLAB SCRIPT:
i-clear ang lahat ng% i-clear ang lahat ng mga objectclc% i-clear ang screen
FDetect = vision. CascadeObjectDetector; % Nakakita ng mga bagay gamit ang Viola-Jones Algorithm
% Basahin ang imahe ng pag-input
imahe = imread ('c: / Deskotp / HarryPotter.jpg'); % load ang imahe sa pamamagitan ng paggamit ng imread ('lokasyon ng file / pangalan.jpg')
BB = hakbang (FDetect, imahe); % Ibinabalik ang mga halaga ng Bounding Box batay sa bilang ng mga bagay
pigura, imshow (I);
hawakan mo
para sa i = 1: laki (BB, 1)
rektanggulo ('Posisyon', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); % r-red, g-green, b-blue
magtapos
pamagat ('Detection ng Mukha'); % pamagat ng figureholder off;
Ang resulta ay magiging katulad ng imaheng naidikit sa mismong hakbang na ito
Upang mabilang ang bilang ng mga mukha na nakita:
i-clear ang lahat ng% i-clear ang lahat ng mga objectclc% i-clear ang screen
FDetect = vision. CascadeObjectDetector; % Tuklasin ang mga bagay gamit ang Viola-Jones Algorithm% Basahin ang imaheng input
imahe = imread ('c: / Deskotp / HarryPotter.jpg'); % load ang imahe sa pamamagitan ng paggamit ng imread ('lokasyon ng file / pangalan.jpg')
BB = hakbang (FDetect, imahe); % Ibinabalik ang mga halaga ng Bounding Box batay sa bilang ng mga bagay
pigura,
imshow (I);
hawakan mo
para sa i = 1: laki (BB, 1)
rektanggulo ('Posisyon', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); % r-red, g-green, b-blue
magtapos
teksto (10, 10, strcat ('\ color {red} Wala ng mga mukha =', num2str (haba (BB)))); Binibigyan ka ng linyang ito ng bilang
pamagat ('Detection ng Mukha'); % pamagat ng pigura
pigilan;
Hakbang 2: Pagtuklas ng Mga Mata ng Tao sa isang Imahe at Pagbibilang
MATLAB SCRIPT:
Alisin lahat;
clc;
% Upang makita ang EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');
% Basahin ang input
imahe = imread ('c: / Deskotp / HarryPotter.jpg'); % load ang imahe sa pamamagitan ng paggamit ng imread ('lokasyon ng file / pangalan.jpg')
BB = hakbang (EyeDetect, imahe);
pigura,
imshow (imahe);
rektanggulo ('Posisyon', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
pamagat ('Mata ng Pagtuklas');
Ang resulta ay magiging katulad ng imaheng naidikit sa mismong hakbang na ito
Upang mabilang ang bilang ng mga mata na nakita:
limasin ang lahat; clc; % Upang tiktikan ang mga Mata
EyeDetect = vision. CascadeObjectDetector ('EyePairBig');
imahe = imread ('c: / Deskotp / HarryPotter.jpg'); % load ang imahe sa pamamagitan ng paggamit ng imread ('lokasyon ng file / pangalan.jpg')
BB = step (EyeDetect, imahe); figure, imshow (imahe); rektanggulo ('Posisyon', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
teksto (10, 10, strcat ('\ kulay {pula} Wala ng mga mata =', num2str (haba (BB))));
pamagat ('Mata ng Pagtuklas');
Hakbang 3: Pagtuklas ng Mouth ng Tao sa isang Imahe at Pagbibilang
MATLAB SCRIPT:
Alisin lahat;
clc;
% Upang tiktikan ang Bibig
MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16);
% Basahin ang imahe ng pag-input = imread ('c: / Deskotp / HarryPotter.jpg'); % load ang imahe sa pamamagitan ng paggamit ng imread ('lokasyon ng file / pangalan.jpg')
BB = hakbang (MouthDetect, imahe);
pigura, imshow (imahe);
hawakan mo
para sa i = 1: laki (BB, 1)
rektanggulo ('Posisyon', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
magtapos
pamagat ('Mouth Detection');
pigilan;
Ang resulta ay magiging katulad ng imaheng naidikit sa mismong hakbang na ito
Upang mabilang ang bilang ng Mouth na nakita:
Alisin lahat; clc; % Upang tiktikan ang Bibig
MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); % Basahin ang input
imahe = imread ('c: / Deskotp / HarryPotter.jpg'); % load ang imahe sa pamamagitan ng paggamit ng imread ('lokasyon ng file / pangalan.jpg') BB = hakbang (MouthDetect, imahe);
pigura, imshow (imahe);
hawakan mo
para sa i = 1: laki (BB, 1)
rektanggulo ('Posisyon', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
magtapos
teksto (10, 10, strcat ('\ kulay {pula} Wala sa mga bibig =', num2str (haba (BB))));
pamagat ('Mouth Detection');
pigilan;
Hakbang 4: Pagtuklas ng Mga Mukha, mata, bibig sa isang Video at Pagbibilang
Alisin lahat;
isara ang lahat;
clc;
% Makunan ang mga frame ng video gamit ang pagpapaandar ng pag-input ng video% Kailangan mong palitan ang resolusyon at ang iyong naka-install na pangalan ng adapter.
a = paningin. CascadeObjectDetector; % upang matukoy ang mukha
% a = vision. CascadeObjectDetector ('Bibig', 'MergeThreshold', 16); % upang tiktikan ang bibig
% a = vision. CascadeObjectDetector ('EyePairBig'); % upang makita ang mga mata
% lamang ang gumagamit ng anumang isa (mukha / mata / bibig)
vid = videoinput ('winvideo', 1, 'yuy2_320x240'); % Itakda ang mga pag-aari ng object ng video
itakda (vid, 'FramesPerTrigger', Inf);
itakda (vid, 'ReturnedColorspace', 'rgb');
vid. FrameGrabInterval = 5; % simulan ang acquisition ng video dito
simulan (vid)% Magtakda ng isang loop na huminto pagkatapos ng 100 mga frame ng acquisition
habang (vid. FramesAcquired <= 200)% Kunin ang snapshot ng kasalukuyang frame
data = getsnapshot (vid);
imshow (data);
b = hakbang (a, data);
hawakan mo
para sa i = 1: laki (b, 1)
rektanggulo ('posisyon', b (i,:), 'linewidth', 2, 'linestyle', '-', 'EdgeColor', 'r');
magtapos
pigilan
teksto (10, 10, strcat ('\ kulay {berde} Wala sa mga mukha =', num2str (haba (b))));
magtapos
huminto (vid); % Itigil ang pagkuha ng video