我想在我的代码中裁剪检测到的面孔。这是我的代码。
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;
他们在裁剪时出现语法错误。 任何人都可以帮助裁剪上面框中检测到的矩形框。
答案 0 :(得分:4)
该代码仅绘制图像中的矩形。如果您确实想要使用定义的矩形裁剪出部分图像,请使用imcrop
。
因此,您可以执行以下操作来存储所有裁剪的矩形。这假设您的函数代码中已经定义了im
和dets
:
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]
xmin
,ymin
是矩形左上角的水平和垂直坐标,width
和height
是宽度和高度矩形。
如果要访问单元格数组中的裁剪部分,只需执行以下操作:
crp = cropped{k};
k
将是您图像中检测到的k th 矩形。