สารบัญ:

MATLAB การตรวจจับใบหน้าอย่างง่าย: 4 ขั้นตอน
MATLAB การตรวจจับใบหน้าอย่างง่าย: 4 ขั้นตอน

วีดีโอ: MATLAB การตรวจจับใบหน้าอย่างง่าย: 4 ขั้นตอน

วีดีโอ: MATLAB การตรวจจับใบหน้าอย่างง่าย: 4 ขั้นตอน
วีดีโอ: Simple Face Detection - การตรวจจับใบหน้า โดยใช้ MATLAB อย่างง่าย 2024, พฤศจิกายน
Anonim
MATLAB การตรวจจับใบหน้าอย่างง่าย
MATLAB การตรวจจับใบหน้าอย่างง่าย

จุดประสงค์หลักของคำแนะนำนี้คือแสดงให้เห็นว่าการประมวลผลภาพจะง่ายเพียงใด ด้วยความช่วยเหลือของ MATLAB

การตรวจจับและติดตามใบหน้าเป็นสาขาการวิจัยที่สำคัญและกระตือรือร้น นั่นเป็นเหตุผลที่ฉันจะอธิบายว่ามันสามารถทำได้ด้วย Matlab อย่างไร

ในบทช่วยสอนต่อไปนี้ ฉันจะทำสิ่งต่อไปนี้:

1.การตรวจจับใบหน้าในรูปและการนับ

2.การตรวจจับดวงตาของมนุษย์ในรูปและการนับ

3.การตรวจจับปากคนในรูปและการนับ

4.การตรวจจับใบหน้าในวิดีโอและการนับ

5.การตรวจจับสายตามนุษย์ในวิดีโอและการนับ

6. การตรวจจับปากมนุษย์ในวิดีโอและการนับ

ขั้นตอนที่ 1: การตรวจจับใบหน้าในรูปภาพและการนับ

การตรวจจับใบหน้าในรูปภาพและการนับ
การตรวจจับใบหน้าในรูปภาพและการนับ

สคริปต์ MATLAB:

ล้างทั้งหมด % ล้างวัตถุทั้งหมด clc % ล้างหน้าจอ

FDetect = วิสัยทัศน์ CascadeObjectDetector; %ตรวจจับวัตถุโดยใช้อัลกอริทึม Viola-Jones

%อ่านภาพที่ป้อน

รูปภาพ = imread('c:\Deskotp\HarryPotter.jpg'); % โหลดภาพโดยใช้ imread('file location\name.jpg')

BB = ขั้นตอน(FDetect, รูปภาพ); % ส่งกลับค่า Bounding Box ตามจำนวนของอ็อบเจ็กต์

รูปแสดง(I);

เดี๋ยว

สำหรับผม = 1:ขนาด(BB, 1)

สี่เหลี่ยมผืนผ้า ('Position', BB(i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -red, g-green, b-blue

จบ

title('การตรวจจับใบหน้า'); % ชื่อเรื่องของตัวเลขที่ปิด;

ผลลัพธ์จะเป็นเหมือนภาพที่แนบมาในขั้นตอนนี้เอง

ในการนับจำนวนใบหน้าที่ตรวจพบ:

ล้าง% ล้างวัตถุทั้งหมดclc %ล้างหน้าจอ

FDetect = วิสัยทัศน์ CascadeObjectDetector; %ตรวจจับวัตถุโดยใช้อัลกอริทึม Viola-Jones %อ่านรูปภาพที่ป้อน

รูปภาพ = imread('c:\Deskotp\HarryPotter.jpg'); % โหลดภาพโดยใช้ imread('file location\name.jpg')

BB = ขั้นตอน(FDetect, รูปภาพ); % ส่งกลับค่า Bounding Box ตามจำนวนของอ็อบเจ็กต์

รูป,

อิมโชว์(I);

เดี๋ยว

สำหรับผม = 1:ขนาด(BB, 1)

สี่เหลี่ยมผืนผ้า ('Position', BB(i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); %r -red, g-green, b-blue

จบ

text(10, 10, strcat('\colour{red} No of faces =', num2str(length(BB)))); บรรทัดนี้ให้คุณนับ

title('การตรวจจับใบหน้า'); %ชื่อเรื่องของรูป

ออกจาก;

ขั้นตอนที่ 2: การตรวจจับดวงตาของมนุษย์ในรูปภาพและการนับ

การตรวจจับดวงตาของมนุษย์ในภาพและการนับ
การตรวจจับดวงตาของมนุษย์ในภาพและการนับ

สคริปต์ MATLAB:

ลบทั้งหมด;

ซีแอลซี;

การตรวจจับ EyesEyeDetect = vision. CascadeObjectDetector('EyePairBig');

%อ่านอินพุต

รูปภาพ = imread('c:\Deskotp\HarryPotter.jpg'); % โหลดภาพโดยใช้ imread('file location\name.jpg')

BB=ขั้นตอน(EyeDetect, รูปภาพ);

รูป,

imshow(ภาพ);

สี่เหลี่ยมผืนผ้า ('ตำแหน่ง', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');

title('การตรวจจับดวงตา');

ผลลัพธ์จะเป็นเหมือนภาพที่แนบในขั้นตอนนี้เอง

ในการนับจำนวนตาที่ตรวจพบ:

ล้างทั้งหมด;clc; %การตรวจจับดวงตา

EyeDetect = การมองเห็น CascadeObjectDetector ('EyePairBig');

รูปภาพ = imread('c:\Deskotp\HarryPotter.jpg'); % โหลดภาพโดยใช้ imread('file location\name.jpg')

BB=step(EyeDetect, image);figure,imshow(รูปภาพ); สี่เหลี่ยมผืนผ้า ('ตำแหน่ง', BB, 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'b');

ข้อความ(10, 10, strcat('\colour{red} No of eyes =', num2str(length(BB))));

title('การตรวจจับดวงตา');

ขั้นตอนที่ 3: การตรวจจับปากมนุษย์ในรูปภาพและการนับ

การตรวจจับปากมนุษย์ในรูปภาพและการนับ
การตรวจจับปากมนุษย์ในรูปภาพและการนับ

สคริปต์ MATLAB:

ลบทั้งหมด;

ซีแอลซี;

%การตรวจจับปาก

MouthDetect = วิสัยทัศน์ CascadeObjectDetector ('ปาก', 'MergeThreshold', 16);

% อ่านรูปภาพอินพุต = imread('c:\Deskotp\HarryPotter.jpg'); % โหลดภาพโดยใช้ imread('file location\name.jpg')

BB=ขั้นตอน(MouthDetect, รูปภาพ);

รูป, imshow(ภาพ);

เดี๋ยว

สำหรับผม = 1:ขนาด(BB, 1)

สี่เหลี่ยมผืนผ้า ('Position', BB(i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');

จบ

title('การตรวจจับปาก');

ออกจาก;

ผลลัพธ์จะเป็นเหมือนภาพที่แนบมาในขั้นตอนนี้เอง

ในการนับจำนวนปากที่ตรวจพบ:

ลบทั้งหมด; ซีแอลซี; %การตรวจจับปาก

MouthDetect = วิสัยทัศน์ CascadeObjectDetector ('ปาก', 'MergeThreshold', 16); %อ่านอินพุต

รูปภาพ = imread('c:\Deskotp\HarryPotter.jpg'); % โหลดภาพโดยใช้ imread('file location\name.jpg') BB=step(MouthDetect, image);

รูป, imshow(ภาพ);

เดี๋ยว

สำหรับผม = 1:ขนาด(BB, 1)

สี่เหลี่ยมผืนผ้า ('Position', BB(i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');

จบ

ข้อความ(10, 10, strcat('\colour{red} No of mouths =', num2str(length(BB))));

title('การตรวจจับปาก');

ออกจาก;

ขั้นตอนที่ 4: การตรวจจับใบหน้า ตา ปากในวิดีโอและการนับ

ลบทั้งหมด;

ปิดทั้งหมด;

ซีแอลซี;

% จับภาพเฟรมวิดีโอโดยใช้ฟังก์ชันอินพุตวิดีโอ คุณต้องเปลี่ยนความละเอียดและชื่ออะแดปเตอร์ที่ติดตั้งไว้

a=vision. CascadeObjectDetector; % เพื่อตรวจจับใบหน้า

% a=vision. CascadeObjectDetector('ปาก', 'MergeThreshold', 16); %การตรวจจับปาก

% a=vision. CascadeObjectDetector('EyePairBig'); %ที่จะตรวจจับดวงตา

% ใช้อย่างใดอย่างหนึ่งเท่านั้น (หน้า/ตา/ปาก)

vid = อินพุตวิดีโอ ('winvideo', 1, 'yuy2_320x240'); % กำหนดคุณสมบัติของวัตถุวิดีโอ

set(vid, 'FramesPerTrigger', Inf);

set(vid, 'ReturnedColorspace', 'rgb');

vid. FrameGrabInterval = 5; %เริ่มรับวิดีโอที่นี่

start(vid) % ตั้งค่าการวนซ้ำที่หยุดหลังจากการได้มา 100 เฟรม

while(vid. FramesAcquired<=200) % รับสแน็ปช็อตของเฟรมปัจจุบัน

data = getsnapshot(วิด);

imshow(ข้อมูล);

b=step(a, ข้อมูล);

เดี๋ยว

สำหรับ i=1:size(b, 1)

สี่เหลี่ยมผืนผ้า ('ตำแหน่ง', b (i,:), 'linewidth', 2, 'linestyle', '-', 'EdgeColor', 'r');

จบ

ออกจาก

ข้อความ(10, 10, strcat('\colour{green} No of faces =', num2str(length(b))));

จบ

หยุด(วิด); % หยุดการรับวิดีโอ

แนะนำ: