2014-10-07 4 views
1

У меня есть код, который определяет лицо в изображении и помещает ограничительную рамку вокруг изображения, как показано ниже. enter image description hereMATLAB - Цветная область вокруг ограничивающей рамки с черным

Но я хочу пойти дальше и покрасить область за пределами рамки черного цвета, чтобы можно было видеть только лицо и фон стал черным. Оригинальный код ..

FDetect = vision.CascadeObjectDetector; 
I = imread('PresidentClinton.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',5,'LineStyle','-','EdgeColor','r'); 
end 
title('Face Detection'); 
hold off; 

ответ

1

Вот простой способ, в котором сначала создать целевое изображение одного и того же размера/класса в качестве исходного изображения и залейте его черным цветом. После этого вы получите координаты прямоугольника и присвоить данные из исходного изображения в целевом изображении:

clear 
close all 

A = imread('peppers.png'); 
B = zeros(size(A),class(A)); % //Pre-define target image of identical size and class than original. 

%// You could also use this line: 
%//B = zeros(size(A),'like',A); 


hRect = rectangle('Position',[100 100 200 160],'LineWidth',3); %// Define rectangle 

RectPos = get(hRect, 'Position'); %// Get the coordinates of the rectangle. 

x = RectPos(1):RectPos(1)+RectPos(3); %// Define x- and y-span 
y = RectPos(2):RectPos(2)+RectPos(4); 

B(x,y,:) = A(x,y,:); %// Assign the selected part of the image to B 

figure 
subplot(1,2,1) 
imshow(A) 
subplot(1,2,2) 
imshow(B) 

Давать что-то вроде этого:

enter image description here

Есть другие способы, конечно, но я думаю, что это один из них прост и прост в реализации в цикле.

+0

так это то, чем вы были? –

 Смежные вопросы

  • Нет связанных вопросов^_^