Drawing a boundary box around an image?
46 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Warid Islam
el 29 de Sept. de 2022
Comentada: Warid Islam
el 30 de Sept. de 2022
I want to draw a boundary box around an image. I tried the code below, but it is throwing me an error. Any suggestions would be appreciated.
m=imread('bb.png')
props = regionprops(m, 'BoundingBox');
bbx = rectangle('Position',props.BoundingBox,'EdgeColor','b','LineWidth',3);
I am getting the following error message.
Error using rectangle
Input arguments must be parameter-value pairs. Each parameter name must be followed by a corresponding value.
1 comentario
KSSV
el 29 de Sept. de 2022
props is a structire....you cannot use that like you have used. What exactly you want to do?
Respuesta aceptada
Walter Roberson
el 29 de Sept. de 2022
My goal is to create a bounding box around the non-zero pixel value region of my image.
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/1140570/box.png';
I = imread(filename);
BW = imbinarize(I);
hmask = any(BW,1);
vmask = any(BW,2);
firstrow = find(hmask, 1); lastrow = find(hmask, 1, 'last');
firstcol = find(vmask, 1); lastcol = find(vmask, 1, 'last');
imshow(I);
rectangle('Position', [firstrow, firstcol, lastrow-firstrow, lastcol-firstcol], 'EdgeColor', 'r');
What happened? Well... it turns out that your image has a white border around it. White borders are non-zero so the entire image needs to be enclosed in the border according to your stated requirements.
BW = any(I < 240, 3) & any(I > 10,3);
hmask = any(BW,1);
vmask = any(BW,2);
firstrow = find(hmask, 1); lastrow = find(hmask, 1, 'last');
firstcol = find(vmask, 1); lastcol = find(vmask, 1, 'last');
imshow(I);
rectangle('Position', [firstrow, firstcol, lastrow-firstrow, lastcol-firstcol], 'EdgeColor', 'r');
Más respuestas (2)
KSSV
el 29 de Sept. de 2022
I = imread('https://in.mathworks.com/matlabcentral/answers/uploaded_files/1139790/bb.png');
props = regionprops(rgb2gray(I), 'BoundingBox');
imshow(I)
hold on
for i = 1:length(props)
rectangle('Position',props(i).BoundingBox,'EdgeColor','b','LineWidth',3);
end
4 comentarios
Image Analyst
el 29 de Sept. de 2022
rgbImage = imread('box.png');
subplot(2, 1, 1);
imshow(rgbImage);
impixelinfo;
title('Original Image')
% Get blue box. Use imclear border to get rid of the white outside
% padding/frame.
mask = imclearborder(rgbImage(:, :, 3) > 0);
mask = bwareafilt(mask, 1);
subplot(2, 1, 2);
imshow(mask);
title('Mask Image')
% Get the bounding box amd dos[;au ot pver the original image in red.
props = regionprops(mask, 'BoundingBox');
subplot(2, 1, 1);
hold on;
rectangle('Position', props.BoundingBox, 'EdgeColor', 'r', 'LineWidth', 2)
Ver también
Categorías
Más información sobre Image Segmentation and Analysis en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!