如何在matlab代码中裁剪图像中的矩形框

时间:2014-11-16 08:04:54

标签: image matlab image-processing computer-vision face-detection

我想在我的代码中裁剪检测到的面孔。这是我的代码。

function DisplayDetections(im, dets)

imshow(im);

k = size(dets,1);

hold on;
for i=1:k
   rectangle('Position', dets(i,:),'LineWidth',2,'EdgeColor', 'r'); 

end
imcrop(rectangle);
hold off;

他们在裁剪时出现语法错误。 任何人都可以帮助裁剪上面框中检测到的矩形框。

1 个答案:

答案 0 :(得分:4)

该代码仅绘制图像中的矩形。如果您确实想要使用定义的矩形裁剪出部分图像,请使用imcrop

因此,您可以执行以下操作来存储所有裁剪的矩形。这假设您的函数代码中已经定义了imdets

k = size(dets,1);
cropped = cell(1,k);

for i=1:k
   cropped{k} = imcrop(im, dets(i,:));
end

cropped将是一个单元格数组,其中每个元素将存储由dets数组中的每个矩形定义的裁剪图像。这假设dets是一个2D数组,其中有4列,行数决定了你有多少个矩形。 dets的每一行的结构应如下:

[xmin ymin width height] 

xminymin是矩形左上角的水平和垂直坐标,widthheight是宽度和高度矩形。

如果要访问单元格数组中的裁剪部分,只需执行以下操作:

crp = cropped{k};

k将是您图像中检测到的k th 矩形。