Matlab 在图像中围绕人物绘制矩形边界框
我想在图像中围绕一个人制作一个边界框。我尝试了不同的方法,但没有得到我想要的解决方案 以下是我正在使用的图像: 以下是我迄今为止编写的代码:Matlab 在图像中围绕人物绘制矩形边界框,matlab,image-processing,computer-vision,matlab-cvst,bounding-box,Matlab,Image Processing,Computer Vision,Matlab Cvst,Bounding Box,我想在图像中围绕一个人制作一个边界框。我尝试了不同的方法,但没有得到我想要的解决方案 以下是我正在使用的图像: 以下是我迄今为止编写的代码: 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);
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
中:
regionprops
调用,提取BoundingBox
和Area
属性区域的边界框
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');
%//步骤#1
im_thresh=im<65;
%//第2步
im_thresh2=imclearborder(im_thresh);
%//第三步
rp=区域属性(im_thresh2,‘边界框’、‘区域’);
%//第四步
面积=[rp.面积];
[~,ind]=最大(面积);
bb=rp(ind).边界框;
%//第五步
imshow(im);
矩形('Position',bb',EdgeColor',red');
这就是我们得到的: 记住,这并不完美。您可能需要使用阈值来获得更精确的边界框,但这应该足以让您开始使用
祝你好运 您还可以使用计算机视觉系统工具箱中的
vision.PeopleDetector
:
im = imread('bnJzI.png');
detector = vision.PeopleDetector('ClassificationModel', 'UprightPeople_96x48', 'ClassificationThreshold', 2.5);
bbox = step(detector, im);
im2 = insertObjectAnnotation(im, 'rectangle', bbox, 'person');
imshow(im2);
您的问题不是绘制边界框,而是在图像中定位人物。如果你做得不好,那么你就无法正确地绘制这个边界框。谢谢rayryeng的建议。有没有办法先找到里面的人?你能上传没有红色边框的原始图像吗?这是原始图像的链接,谢谢rayryeng,当我运行代码时,它在步骤4未定义变量“a”或类“a”中给了我错误。@AadnanFarooqA-对不起,输入错误。让我fix@AadnanFarooqA-固定。再运行一次,然后再试一次