2016-04-07 1 views
-1
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; 

Filtre:Détection de visage et donner filtre

E = imerode(I,strel('square',5)); 

figure, imshow(E); 

Mon problème est de savoir comment donner les filtres que dans le rectangle zone du visage.

enter image description here

Répondre

1

Vous voulez extraire région juste de l'image qui se trouve dans la zone de délimitation, puis appliquez votre opération imerode uniquement sur cette partie.

La zone de délimitation est de la forme [x, y, largeur, hauteur]. Nous devrons convertir ceci en pixels.

%// 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));