2013-02-25 61 views
1

我們正在處理我們主項目中的一個問題,我們希望您能幫助我們解決問題。我們的項目是便攜式人臉識別系統。我們需要從選定的邊界切出一張臉。如何從matlab中的圖像中剪切選定的部分?

這是我們的代碼:

img=imread('10.jpg'); 
for i = 1:size(img,1) 
    for j = 1:size(img,2) 
     R = img(i,j,1); 
     G = img(i,j,2); 
     B = img(i,j,3); 
     if(R > 92 && G > 40 && B > 20) 
      v = [R,G,B]; 
      if(abs(R-G) > 15 && R > G && R > B) 
        final_image(i,j) = 1; 
      end 
     end 
    end 
end 
imshow(final_image) 
rgbInputImage=img; 
%Grayscale To Binary. 
binaryImage=im2bw(final_image,0.6); 
%Filling The Holes. 
binaryImage = imfill(binaryImage, 'holes'); 
binaryImage = bwareaopen(binaryImage,1890); 
figure,imshow(binaryImage); 
labeledImage = bwlabel(binaryImage, 8); 
+0

這是迄今爲止我們所做的代碼... img = imread('10 .jpg');對於i = 1:size(img,1) 對於j = 1: R = img(i,j,1) G = img(i,j,2); B = img(i,j,3); (R> 92 && G> 40 && B> 20) v = [R,G,B];如果(abs(R-G)> 15 && R> G && R> B) final_image(i,j)= 1; 端 端 端 端 imshow(final_image) rgbInputImage = IMG; %灰度到二進制。 binaryImage = im2bw(final_image,0.6); %填充孔。二進制圖像= imfill(binaryImage,'holes'); binaryImage = bwareaopen(binaryImage,1890); figure,imshow(binaryImage); labeledImage = bwlabel(binaryImage,8); – user2106151 2013-02-25 05:50:53

+0

blobMeasurements = regionprops(labeledImage,final_image,'all'); numberOfPeople = size(blobMeasurements,1) %numberOfPeople = 1; imagesc(rgbInputImage); title('Outlines,from bwboundaries()'); %軸平方; 堅持; boundaries = bwboundaries(binaryImage); for k = 1:numberOfPeople thisBoundary = boundaries {k}; (thisBoundary(:,2),thisBoundary(:,1),'g','LineWidth',2); 結束 拖延; imagesc(rgbInputImage); 堅持; 標題('Original with bounding boxes'); %fprintf(1,'Blob#x1 x2 y1 y2 \ n'); – user2106151 2013-02-25 05:53:31

+0

for k = 1:numberOfPeople x1 = thisBlobsBox(1); y1 = thisBlobsBox(2); x2 = x1 + thisBlobsBox(3); y2 = y1 + thisBlobsBox(4); x = [x1 x2 x2 x1 x1]; y = [y1 y1 y2 y2 y1]; y = [y1 y1 y2 y2 y1] (x,y,'LineWidth',2); 結束 figure,imshow(標示爲圖像); B = bwboundaries(binaryImage); (B);對於k = 1:長度(B) boundary = B {k};對於k = 1,長度爲(B) 保持爲 。 plot(boundary(:,2),boundary(:,1),'g','LineWidth',0.2) end – user2106151 2013-02-25 05:53:50

回答

1

您可以檢查MATLAB內置功能roipoly。它將採用邊界的座標並構建一個多邊形蒙板。這個二進制掩碼可以與你的圖像相乘來提取面部。

0

你可以在MATLAB中使用imcrop函數。有關更多信息,請在命令窗口中鍵入help imcrop。

相關問題