Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Ushbu qo'llanmalarning asosiy maqsadi - MATLAB yordamida tasvirni qayta ishlash qanchalik oson bo'lishini ko'rsatish.
Yuzni aniqlash va kuzatish muhim va faol tadqiqot sohasi bo'lib kelgan, shuning uchun men buni Matlab yordamida qanday qilish mumkinligini tushuntirib beraman.
Quyidagi darslikda men quyidagi ishlarni bajaraman:
1. tasvirdagi yuzlarni aniqlash va sanash.
2. inson ko'zlarini tasvirda aniqlash va sanash.
3. tasvirda odam og'zini aniqlash va sanash.
4. Videodagi yuzlarni aniqlash va hisoblash.
5. Videoda inson ko'zlarini aniqlash va hisoblash.
6. Videoda odamning og'zini aniqlash va hisoblash.
1 -qadam: tasvirdagi yuzlarni aniqlash va sanash
MATLAB SKRIPTI:
ekranni tozalash % ni tozalash
FDetect = vision. CascadeObjectDetector; %Viola-Jons algoritmi yordamida ob'ektlarni aniqlang
%Kirish tasvirini o'qing
image = imread ('c: / Deskotp / HarryPotter.jpg'); %imread yordamida rasmni yuklang ('fayl joylashuvi / name.jpg')
BB = qadam (FDetect, rasm); %Ob'ektlar soniga qarab chegara qutisi qiymatlarini qaytaradi
rasm, imshow (I);
to'xtab tur
i = 1 uchun: o'lcham (BB, 1)
to'rtburchak ('Manzil', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -qizil, g-yashil, b-ko'k
oxiri
sarlavha ("Yuzni aniqlash"); o'chirilgan shaxsning %nomi;
Natija xuddi shu qadamda biriktirilgan tasvirga o'xshaydi
Aniqlangan yuzlar sonini hisoblash uchun:
ekranni tozalash % ni tozalash
FDetect = vision. CascadeObjectDetector; %Viola-Jones algoritmi yordamida ob'ektlarni aniqlash %Kirish tasvirini o'qing
image = imread ('c: / Deskotp / HarryPotter.jpg'); %imread yordamida rasmni yuklaydi ('fayl joylashuvi / name.jpg')
BB = qadam (FDetect, rasm); %Ob'ektlar soniga qarab chegara qutisi qiymatlarini qaytaradi
raqam,
imshow (I);
to'xtab tur
i = 1 uchun: o'lcham (BB, 1)
to'rtburchak ('Manzil', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -qizil, g-yashil, b-ko'k
oxiri
matn (10, 10, strcat ('\ color {red} Yuzlar soni =', num2str (uzunlik (BB))))); Bu chiziq sizga hisobni beradi
sarlavha ("Yuzni aniqlash"); raqamning %sarlavhasi
ushlab turish;
2 -qadam: inson ko'zlarini rasmda aniqlash va sanash
MATLAB SKRIPTI:
hammasini tozalamoq;
clc;
%Aniqlash uchun EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');
%Kirishni o'qing
image = imread ('c: / Deskotp / HarryPotter.jpg'); %imread yordamida rasmni yuklaydi ('fayl joylashuvi / name.jpg')
BB = qadam (EyeDetect, rasm);
raqam,
imshow (rasm);
to'rtburchak ('Manzil', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
sarlavha ("Ko'zni aniqlash");
Natijada, bu qadamning o'zida biriktirilgan tasvirga o'xshaydi
Aniqlangan ko'zlar sonini hisoblash uchun:
hamma narsani tozalash; clc; %Ko'zlarni aniqlash uchun
EyeDetect = vision. CascadeObjectDetector ('EyePairBig');
image = imread ('c: / Deskotp / HarryPotter.jpg'); %imread yordamida rasmni yuklaydi ('fayl joylashuvi / name.jpg')
BB = qadam (EyeDetect, tasvir); raqam, imshow (rasm); to'rtburchak ('Manzil', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');
matn (10, 10, strcat ('\ color {red} Ko'zlar soni =', num2str (uzunlik (BB)))));
sarlavha ("Ko'zni aniqlash");
3 -qadam: tasvirdagi odamning og'zini aniqlash va sanash
MATLAB SKRIPTI:
hammasini tozalamoq;
clc;
%Og'izni aniqlash uchun
MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16);
%Kirish tasvirini o'qing = imread ('c: / Deskotp / HarryPotter.jpg'); %imread yordamida rasmni yuklaydi ('fayl joylashuvi / name.jpg')
BB = qadam (MouthDetect, rasm);
rasm, imshow (rasm);
to'xtab tur
i = 1 uchun: o'lcham (BB, 1)
to'rtburchak ('Manzil', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
oxiri
sarlavha ("Og'izni aniqlash");
ushlab turish;
Natija xuddi shu qadamda biriktirilgan tasvirga o'xshaydi
Aniqlangan og'iz sonini hisoblash uchun:
hammasini tozalamoq; clc; %Og'izni aniqlash uchun
MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %Kirishni o'qing
image = imread ('c: / Deskotp / HarryPotter.jpg'); %imread ('fayl joylashuvi / name.jpg') yordamida tasvirni yuklaydi BB = qadam (MouthDetect, rasm);
rasm, imshow (rasm);
to'xtab tur
i = 1 uchun: o'lcham (BB, 1)
to'rtburchak ('Manzil', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');
oxiri
matn (10, 10, strcat ('\ color {red} Og'izlar soni =', num2str (uzunlik (BB)))));
sarlavha ("Og'izni aniqlash");
ushlab turish;
4 -qadam: Videoda yuzlarni, ko'zlarni, og'izni aniqlash va sanash
hammasini tozalamoq;
hammasini yopish;
clc;
% Video kiritish funksiyasi yordamida video kadrlarni suratga oling % Siz piksellar sonini va o'rnatilgan adapter nomini o'zgartirishingiz kerak.
a = ko'rish. CascadeObjectDetector; yuzni aniqlash uchun %
% a = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); %og'izni aniqlash uchun
% a = vision. CascadeObjectDetector ('EyePairBig'); %ko'zlarni aniqlash uchun
%faqat bittasini ishlating (yuz/ko'z/og'iz)
vid = video kiritish ('winvideo', 1, 'yuy2_320x240'); % Video ob'ektining xususiyatlarini o'rnating
to'siq (vid, 'FramesPerTrigger', Inf);
sozlash (vid, 'QaytganColorspace', 'rgb');
vid. FrameGrabInterval = 5; %video olishni shu erda boshlang
start (vid) % 100 kadr olishdan keyin to'xtaydigan tsiklni o'rnating
while (vid. FramesAcquired <= 200) % Joriy ramkaning suratini oling
ma'lumotlar = getsnapshot (vid);
imshow (ma'lumotlar);
b = qadam (a, ma'lumotlar);
to'xtab tur
i = 1 uchun: o'lcham (b, 1)
to'rtburchak ('pozitsiya', b (i,:), 'chiziq kengligi', 2, 'chiziq tarzi', '-', 'EdgeColor', 'r');
oxiri
ushlab turing
matn (10, 10, strcat ('\ color {green} Yuzlar soni =', num2str (uzunlik (b)))));
oxiri
to'xtatish (vid); % Video olishni to'xtating