Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
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
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
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
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