【问题标题】:How to crop rectangle box in image in matlab code如何在matlab代码中裁剪图像中的矩形框
【发布时间】:2015-01-13 07:45:48
【问题描述】:

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

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;

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

【问题讨论】:

  • 什么是语法错误?这段代码应该运行......除非你在编辑器中按下运行按钮......
  • 语法错误可能是您在函数“imcrop”的输入参数中分配了一个函数“矩形”。

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


【解决方案1】:

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

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

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

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

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

[xmin ymin width height] 

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

如果您想访问元胞数组中的裁剪部分,只需执行以下操作:

crp = cropped{k};

k 将是您图像中检测到的第 kth 个矩形。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2014-10-24
    • 1970-01-01
    • 2014-08-03
    相关资源
    最近更新 更多