1

我们正在处理我们的主要项目中的一个问题,我们希望您能帮助我们解决这个问题。我们的项目是便携式人脸识别系统。我们需要从选定的边界切出一个面。

这是我们的代码:

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);
4

2 回答 2

1

您可以检查 MATLAB 内置函数roipoly。它将获取x-y边界坐标并构建多边形蒙版。这个二进制掩码可以与您的图像相乘以提取人脸。

于 2013-02-25T05:52:13.963 回答
0

您可以在 MATLAB 中使用 imcrop 函数。有关更多信息,请在命令窗口中键入帮助 imcrop。

于 2013-02-25T16:40:33.600 回答