Draw rectangles on the image in Matlab

I am trying to figure out how to draw rectangles on an image in Matlab.

Once the rectangles are drawn in the image, I would like to save the changes.

Thanks in advance!

+6
source share
4 answers

Use getframe

 img = imread('cameraman.tif'); fh = figure; imshow( img, 'border', 'tight' ); %//show your image hold on; rectangle('Position', [50 70 30 60] ); %// draw rectangle on image frm = getframe( fh ); %// get the image+rectangle imwrite( frm.cdata, 'savedFileName.png' ); %// save to file 

See rectanlge for more options for drawing rectangles. The 'Position' argument for the rectangle is in the format [from_x from_y width height] and is specified in units of pixels.

+7
source

Without using getframe:

 im=imread('face.jpg'); %Image read rectangle('Position', [10 10 30 30] ,... 'EdgeColor', 'r',... 'LineWidth', 3,... 'LineStyle','-');%rectangle properties imshow( im, rectangle); %draw rectangle on image. 

See this MathWorks thread for more details :)

+2
source
  I=imread('%required image'); [M,N] = size(rgb2gray(I));%find the size of the image x=int16(M/3);y=int16(N/3);xwidth=int16(N/3); ywidth=int16(N/3);%specify the position pos=[xy xwidth ywidth];% give the position in which you wanna insert the rectangle imshow(I);hold on rectangle('Position',pos,'EdgeColor','b') 
0
source

I use octave and the getframe function getframe not available, so I wrote this trivial function

 %% Draw red rectangle IN the image using the BoundingBox from regionprops function rgbI = drawRectangleOnImg (box,rgbI) x = box(2); y = box(1); w = box(4); h = box(3); rgbI(x:x+w,y,1) = 255; rgbI(x:x+w,y+h,1) = 255; rgbI(x,y:y+h,1) = 255; rgbI(x+w,y:y+h,1) = 255; rgbI(x:x+w,y,2) = 0; rgbI(x:x+w,y+h,2) = 0; rgbI(x,y:y+h,2) = 0; rgbI(x+w,y:y+h,2) = 0; rgbI(x:x+w,y,3) = 0; rgbI(x:x+w,y+h,3) = 0; rgbI(x,y:y+h,3) = 0; rgbI(x+w,y:y+h,3) = 0; end 
-2
source

Source: https://habr.com/ru/post/976630/


All Articles