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

네가 그랬니? –