matlab在图像中画长方形(框)

时间:2021-02-23 15:49:30
function [state,result]=draw_rect(data,pointAll,windSize,showOrNot)
% 函数调用:[state,result]=draw_rect(data,pointAll,windSize,showOrNot)
% 函数功能:在图像画个长方形框
% 函数输入:data为原始的大图,可为灰度图,可为彩色图
% pointAll 框的左上角在大图中的坐标(每行代表一个坐标),
% 注意:在图中的坐标系为第一列为y,第二列为x(很奇怪的)
% windSize 框的大小 windSize=[,] 分别表示长宽
% showOrNot 是否要显示,默认为显示出来
% 函数输出:state -- 表示程序结果状态
% result - 结果图像数据
% 函数历史: v0. @-- created by Aborn if nargin <
showOrNot = ;
end rgb = [ ]; % 边框颜色
lineSize = ; % 边框大小,取1,, windSize(,)=windSize(,);
windSize(,) = windSize(,);
if windSize(,) > size(data,) ||...
windSize(,) > size(data,)
state = -; % 说明窗口太大,图像太小,没必要获取
disp('the window size is larger then image...');
return;
end result = data;
if size(data,) ==
for k=:
for i=:size(pointAll,) %画边框顺序为:上右下左的原则
result(pointAll(i,),pointAll(i,):pointAll(i,)+windSize(i,),k) = rgb(,k);
result(pointAll(i,):pointAll(i,)+windSize(i,),pointAll(i,)+windSize(i,),k) = rgb(,k);
result(pointAll(i,)+windSize(i,),pointAll(i,):pointAll(i,)+windSize(i,),k) = rgb(,k);
result(pointAll(i,):pointAll(i,)+windSize(i,),pointAll(i,),k) = rgb(,k);
if lineSize == || lineSize ==
result(pointAll(i,)+,pointAll(i,):pointAll(i,)+windSize(i,),k) = rgb(,k);
result(pointAll(i,):pointAll(i,)+windSize(i,),pointAll(i,)+windSize(i,)-,k) = rgb(,k);
result(pointAll(i,)+windSize(i,)-,pointAll(i,):pointAll(i,)+windSize(i,),k) = rgb(,k);
result(pointAll(i,):pointAll(i,)+windSize(i,),pointAll(i,)-,k) = rgb(,k);
if lineSize ==
result(pointAll(i,)-,pointAll(i,):pointAll(i,)+windSize(i,),k) = rgb(,k);
result(pointAll(i,):pointAll(i,)+windSize(i,),pointAll(i,)+windSize(i,)+,k) = rgb(,k);
result(pointAll(i,)+windSize(i,)+,pointAll(i,):pointAll(i,)+windSize(i,),k) = rgb(,k);
result(pointAll(i,):pointAll(i,)+windSize(i,),pointAll(i,)+,k) = rgb(,k);
end
end
end
end
end state = ; if showOrNot ==
figure;
imshow(result);
end

在main函数中调用如下:

% main.m
clc;
clear;
close all; data = imread('man_1.jpg');
pointAll = [,];
windSize = [,]; [state,results]=draw_rect(data,pointAll,windSize);
return;

原图像为:

matlab在图像中画长方形(框)

结果图像为:

matlab在图像中画长方形(框)

特别注意:图像中显示的坐标系和我们平时用的不一样!!!

from: http://blog.csdn.net/loveaborn/article/details/8545809