在Matlab中绘制图像上的矩形

时间:2014-10-12 06:41:34

标签: matlab

我试图弄清楚如何在Matlab中的图像上绘制矩形。

在图像上绘制矩形后,我想保存更改。

提前致谢!

5 个答案:

答案 0 :(得分:8)

使用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

有关绘制矩形的更多选项,请参阅rectanlge。矩形的'Position'参数格式为[from_x from_y width height],以像素为单位给出。

答案 1 :(得分:3)

不使用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.

有关详细信息,请访问this MathWorks thread:)

答案 2 :(得分:0)

 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=[x y xwidth ywidth];% give the position in which you wanna insert the rectangle
imshow(I);hold on
rectangle('Position',pos,'EdgeColor','b')

答案 3 :(得分:0)

最好和易于使用的是Matlab的更新版本

img = imread('abcd.jpg');
box = [X1, Y1, width, height];    
outImage= insertObjectAnnotation(img,'rectangle',bbox,'Rectangle');
figure, imshow(outImage), title('Image with rectangle');

答案 4 :(得分:-1)

我正在使用octave并且函数getframe不可用所以我写了这个简单的函数

%% 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