人脸检测和给定过滤器
Face detection and give filter
FDetect = vision.CascadeObjectDetector;
%// Read the input image
I = imread('face.jpg');
%// Returns Bounding Box values based on number of objects
BB = step(FDetect,I);
figure,
imshow(I);
hold on
for i = 1:size(BB,1)
rectangle('Position',BB(i,:),'LineWidth',2.5,'LineStyle','','EdgeColor','r');
end
title('Face Detection');
hold off;
过滤器:
E = imerode(I,strel('square',5));
figure, imshow(E);
我的问题是如何只在矩形面部区域提供滤镜。
您将只想提取边界框内的图像区域,然后仅对该部分应用 imerode
操作。
边界框的形式为 [x,y,width,height]。我们需要将其转换为像素。
%// Ensure that we are working with integers.
BB(k,:) = round(BB(k,:));
%// Sample all rows and columns within this bounding box
rows = BB(k,2):sum(BB(k,[2 4]))
cols = BB(k,1):sum(BB(k,[1 3]))
%// Apply the imerode operation on just these pixels
I(rows,cols) = imerode(I(rows,cols), strel('square', 5));
FDetect = vision.CascadeObjectDetector;
%// Read the input image
I = imread('face.jpg');
%// Returns Bounding Box values based on number of objects
BB = step(FDetect,I);
figure,
imshow(I);
hold on
for i = 1:size(BB,1)
rectangle('Position',BB(i,:),'LineWidth',2.5,'LineStyle','','EdgeColor','r');
end
title('Face Detection');
hold off;
过滤器:
E = imerode(I,strel('square',5));
figure, imshow(E);
我的问题是如何只在矩形面部区域提供滤镜。
您将只想提取边界框内的图像区域,然后仅对该部分应用 imerode
操作。
边界框的形式为 [x,y,width,height]。我们需要将其转换为像素。
%// Ensure that we are working with integers.
BB(k,:) = round(BB(k,:));
%// Sample all rows and columns within this bounding box
rows = BB(k,2):sum(BB(k,[2 4]))
cols = BB(k,1):sum(BB(k,[1 3]))
%// Apply the imerode operation on just these pixels
I(rows,cols) = imerode(I(rows,cols), strel('square', 5));