Mục lục:

MATLAB Nhận diện khuôn mặt dễ dàng: 4 bước
MATLAB Nhận diện khuôn mặt dễ dàng: 4 bước

Video: MATLAB Nhận diện khuôn mặt dễ dàng: 4 bước

Video: MATLAB Nhận diện khuôn mặt dễ dàng: 4 bước
Video: How to Detect Facial Feature using Matlab |Matlab Code| ~xRay Pixy 2024, Tháng bảy
Anonim
Nhận diện khuôn mặt dễ dàng MATLAB
Nhận diện khuôn mặt dễ dàng MATLAB

Mục đích chính của tài liệu hướng dẫn này là cho thấy việc xử lý hình ảnh sẽ dễ dàng đến mức nào, Với sự trợ giúp của MATLAB

Phát hiện và theo dõi khuôn mặt là một lĩnh vực nghiên cứu tích cực và quan trọng, vì vậy đó là lý do tại sao tôi sẽ giải thích cách nó có thể được thực hiện với Matlab.

Trong hướng dẫn sau, tôi sẽ thực hiện những thứ bên dưới:

1. phát hiện khuôn mặt trong hình ảnh và đếm.

2. phát hiện mắt người trong một hình ảnh và đếm.

3. phát hiện miệng người trong một hình ảnh và đếm.

4. phát hiện khuôn mặt trong Video và đếm.

5. phát hiện mắt người trong video và đếm.

6. phát hiện miệng người trong Video và đếm.

Bước 1: Phát hiện khuôn mặt trong ảnh và đếm

Phát hiện khuôn mặt trong một hình ảnh và đếm
Phát hiện khuôn mặt trong một hình ảnh và đếm

MATLAB SCRIPT:

xóa tất cả% xóa tất cả các đối tượng

FDetect = vision. CascadeObjectDetector; % Phát hiện các đối tượng bằng Thuật toán Viola-Jones

% Đọc hình ảnh đầu vào

image = imread ('c: / Deskotp / HarryPotter.jpg'); % tải hình ảnh bằng cách sử dụng imread ('file location / name.jpg')

BB = bước (FDetect, hình ảnh); % Trả về giá trị Hộp giới hạn dựa trên số lượng đối tượng

hình, imshow (I);

Giữ lấy

cho i = 1: kích thước (BB, 1)

chữ nhật ('Vị trí', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); % r -red, g-green, b-blue

kết thúc

title ('Nhận diện khuôn mặt'); % title of the figurehold off;

Kết quả sẽ giống như hình ảnh được đính kèm trong chính bước này

Để đếm số khuôn mặt được phát hiện:

xóa tất cả% xóa tất cả các đối tượng

FDetect = vision. CascadeObjectDetector; % Phát hiện đối tượng bằng Thuật toán Viola-Jones% Đọc hình ảnh đầu vào

image = imread ('c: / Deskotp / HarryPotter.jpg'); % tải hình ảnh bằng cách sử dụng imread ('file location / name.jpg')

BB = bước (FDetect, hình ảnh); % Trả về giá trị Hộp giới hạn dựa trên số lượng đối tượng

nhân vật,

imshow (tôi);

Giữ lấy

cho i = 1: kích thước (BB, 1)

chữ nhật ('Vị trí', BB (i,:), 'LineWidth', 5, 'LineStyle', '-', 'EdgeColor', 'r'); % r -red, g-green, b-blue

kết thúc

text (10, 10, strcat ('\ color {red} Số khuôn mặt =', num2str (length (BB)))); Dòng này cung cấp cho bạn số

title ('Nhận diện khuôn mặt'); % tiêu đề của hình

giữ lại;

Bước 2: Phát hiện mắt người trong hình ảnh và đếm

Phát hiện mắt người trong hình ảnh và đếm
Phát hiện mắt người trong hình ảnh và đếm

MATLAB SCRIPT:

quet sạch tât cả;

clc;

% Để phát hiện EyesEyeDetect = vision. CascadeObjectDetector ('EyePairBig');

% Đọc đầu vào

image = imread ('c: / Deskotp / HarryPotter.jpg'); % tải hình ảnh bằng cách sử dụng imread ('file location / name.jpg')

BB = bước (EyeDetect, hình ảnh);

nhân vật,

imshow (hình ảnh);

hình chữ nhật ('Vị trí', BB, 'Chiều rộng Đường thẳng', 4, 'Kiểu Đường thẳng', '-', 'Màu sắc cạnh', 'b');

title ('Phát hiện mắt');

Kết quả sẽ giống như hình ảnh được đính kèm trong chính bước này

Để đếm số lượng mắt được phát hiện:

xóa tất cả; clc; % Để phát hiện mắt

EyeDetect = vision. CascadeObjectDetector ('EyePairBig');

image = imread ('c: / Deskotp / HarryPotter.jpg'); % tải hình ảnh bằng cách sử dụng imread ('file location / name.jpg')

BB = step (EyeDetect, image); figure, imshow (image); hình chữ nhật ('Vị trí', BB, 'Chiều rộng Đường thẳng', 4, 'Kiểu Đường thẳng', '-', 'Màu sắc cạnh', 'b');

text (10, 10, strcat ('\ color {red} Không có mắt =', num2str (length (BB))));

title ('Phát hiện mắt');

Bước 3: Phát hiện miệng người trong hình ảnh và đếm

Phát hiện miệng người trong hình ảnh và đếm
Phát hiện miệng người trong hình ảnh và đếm

MATLAB SCRIPT:

quet sạch tât cả;

clc;

% Để phát hiện miệng

MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16);

% Đọc hình ảnh đầu vào = imread ('c: / Deskotp / HarryPotter.jpg'); % tải hình ảnh bằng cách sử dụng imread ('file location / name.jpg')

BB = bước (MouthDetect, hình ảnh);

figure, imshow (hình ảnh);

Giữ lấy

cho i = 1: kích thước (BB, 1)

chữ nhật ('Vị trí', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');

kết thúc

title ('Phát hiện miệng');

giữ lại;

Kết quả sẽ giống như hình ảnh được đính kèm trong chính bước này

Để đếm số Miệng được phát hiện:

quet sạch tât cả; clc; % Để phát hiện miệng

MouthDetect = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); % Đọc đầu vào

image = imread ('c: / Deskotp / HarryPotter.jpg'); % tải hình ảnh bằng cách sử dụng imread ('file location / name.jpg') BB = step (MouthDetect, image);

figure, imshow (hình ảnh);

Giữ lấy

cho i = 1: kích thước (BB, 1)

chữ nhật ('Vị trí', BB (i,:), 'LineWidth', 4, 'LineStyle', '-', 'EdgeColor', 'r');

kết thúc

text (10, 10, strcat ('\ color {red} Không có miệng =', num2str (length (BB))));

title ('Phát hiện miệng');

giữ lại;

Bước 4: Phát hiện khuôn mặt, mắt, miệng trong video và đếm

quet sạch tât cả;

đóng tất cả;

clc;

% Chụp các khung hình video bằng chức năng đầu vào video% Bạn phải thay thế độ phân giải và tên bộ điều hợp đã cài đặt của mình.

a = vision. CascadeObjectDetector; % để phát hiện khuôn mặt

% a = vision. CascadeObjectDetector ('Mouth', 'MergeThreshold', 16); % để phát hiện miệng

% a = vision. CascadeObjectDetector ('EyePairBig'); % để phát hiện mắt

% chỉ sử dụng một cái bất kỳ (mặt / mắt / miệng)

vid = videoinput ('winvideo', 1, 'yuy2_320x240'); % Đặt thuộc tính của đối tượng video

set (vid, 'FramesPerTrigger', Inf);

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

vid. FrameGrabInterval = 5; % bắt đầu chuyển đổi video tại đây

start (vid)% Đặt vòng lặp dừng sau 100 khung hình chuyển đổi

while (vid. FramesAcquired <= 200)% Nhận ảnh chụp nhanh của khung hình hiện tại

data = getnapshot (vid);

imshow (dữ liệu);

b = bước (a, dữ liệu);

Giữ lấy

cho i = 1: kích thước (b, 1)

chữ nhật ('position', b (i,:), 'linewidth', 2, 'linestyle', '-', 'EdgeColor', 'r');

kết thúc

giữ lại

text (10, 10, strcat ('\ color {green} Không có khuôn mặt =', num2str (length (b))));

kết thúc

dừng lại (vid); % Dừng chuyển đổi video

Đề xuất: