如何在matlab中从图像中剪切选定的部分?

时间:2013-02-25 05:46:17

标签: matlab face-detection bounding-box

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

这是我们的代码:

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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