gpt4 book ai didi

matlab - 在图像中的人周围绘制一个矩形边界框

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:04 24 4
gpt4 key购买 nike

我想在图像中的人物周围制作一个边界框。我尝试了不同的方法,但无法获得我想要的解决方案。

这是我正在使用的图像:

enter image description here

这是我到目前为止编写的代码:

bw = im2bw(test, graythresh(test));    
bw2 = imfill(bw,'holes');
imshow(bw2);

figure;
L = bwlabel(bw2);
imshow(label2rgb(L, @jet, [.7 .7 .7]))

figure;
imshow(I1);
R = regionprops(L, 'BoundingBox');
rectangle('Position', R(1).BoundingBox);

最佳答案

您的问题实际上不是绘制边界框 - 它是定位图像内的人,您没有完全正确地完成。如果您没有正确执行此操作,那么您将无法在人物周围放置正确的边界框。这就是我为定位图像中的人所做的,然后在这个人周围绘制一个边界框。这是假设您的图像存储在 im 中:

  1. 请注意,人物的强度分布比场景中的大部分都暗。因此,我将通过选择强度小于 65 的任何像素为白色而其他像素为黑色来对图像进行阈值处理。
  2. 我清除了图像边框周围的所有白色像素
  3. 我执行 regionprops 调用以提取 BoundingBoxArea 属性。
  4. 我搜索所有区域并找到 Area 最大的 BoundingBox
  5. 我使用这个 BoundingBox 并将其绘制在我们的图像上。

因此:

%// Step #1
im_thresh = im < 65;

%// Step #2
im_thresh2 = imclearborder(im_thresh);

%// Step #3
rp = regionprops(im_thresh2, 'BoundingBox', 'Area');

%// Step #4
area = [rp.Area].';
[~,ind] = max(area);
bb = rp(ind).BoundingBox;

%// Step #5
imshow(im);
rectangle('Position', bb, 'EdgeColor', 'red');

这是我们得到的:

enter image description here

请记住,这并不完美。您可能需要尝试使用阈值来获得更准确的边界框,但这应该足以让您开始。

祝你好运!

关于matlab - 在图像中的人周围绘制一个矩形边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27478102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com