使用matlab在图片上画框,并保存

clear all
close all
clc
for k=16 
p=k;
q=int2str(p);
path='E:\CellDetection\';
path1='E:\just_draw\';
I=imread(strcat(path,num2str(k),'.jpg'));
img=imread(strcat(path1,num2str(k),'.jpg'));%读入两张一样的图存放于不同路径,目的是为了不使原图改动,
for j=1:50
figure(1),imshow(I)
[I2,rect] = imcrop(I);         %截取需要的框图的坐标;
X1=rect(1);%x坐标  横向的轴是x;
X2=rect(2);%y坐标  纵向的轴是y;
w=rect(3); %w宽度  矩形框横向的长度是宽w;
h=rect(4); %h高度  矩形框纵向的长度是高h;
X3=X1+w;   %右上角x坐标
X4=X2+h;   %左下角y坐标
x1=ceil(X1);x2=ceil(X2);x3=ceil(X3);x4=ceil(X4);%向大取整操作,下面的函数只能取整
%% 
%画边框顺序为:上下左右的原则   
%img: input color image  
rgb = [255 0 0];    
  
[imgH,imgW,imgC] = size(img);%imgH:图像的高度,纵向;imgW:图像的宽度,横向;imgC:图像的通道数

if size(img,3) == 3 %draw on color image   size(img,1):矩阵的行数;size(img,2):矩阵的列数;size(img,3):矩阵是否是三维的 
    for M=1:3    
            if( x1>=0 && x2>=0 && x3<=imgW && x4<=imgH ) 
                
                %top line 最上面一行,令img图像的(第x2行,第x1列到第x3列,第M维)的像素为rgb(1,M);
                img( x2,x1:x3,M ) = rgb(1,M);   
                img( x2+1,x1:x3,M ) = rgb(1,M);%作用是使线条加粗  
                
                %bottom line 最下面一行,令img图像的(第x4行,第x1列到第x3列,第M维)的像素为rgb(1,M);  
                img( x4,x1:x3,M ) = rgb(1,M);  
                img( x4-1,x1:x3,M ) = rgb(1,M);  

%left line 最左边一行,令img图像的(第x2行到第x4行,第x1列,第M维)的像素为rgb(1,M); img( x2:x4, x1,M ) = rgb(1,M);%left line img( x2:x4, x1+1,M ) = rgb(1,M); %left line 最右边一行,令img图像的(第x2行到第x4行,第x3列,第M维)的像素为rgb(1,M); img( x2:x4, x3,M ) = rgb(1,M);%right line img( x2:x4, x3-1,M ) = rgb(1,M);
end end endif size(img,3) ~= 3 %如果图片是单通道图像 if( x1>=0 && x2>=0 && x3<=imgW && x4<=imgH ) %top line 最上面一行,令img图像的(第x2行,第x1列到第x3列,第M维)的像素为rgb(1,M); img( x2,x1:x3) = rgb(1,1); img( x2+1,x1:x3) = rgb(1,1);%作用是使线条加粗 %bottom line 最下面一行,令img图像的(第x4行,第x1列到第x3列,第M维)的像素为rgb(1,M);
img( x4,x1:x3) = rgb(1,1); img( x4-1,x1:x3) = rgb(1,1); %left line 最左边一行,令img图像的(第x2行到第x4行,第x1列,第M维)的像素为rgb(1,M); img( x2:x4,x1) = rgb(1,1);%left line img( x2:x4,x1+1) = rgb(1,1); %left line 最右边一行,令img图像的(第x2行到第x4行,第x3列)的像素为rgb(1,M); img( x2:x4,x3) = rgb(1,1);%right
line img( x2:x4,x3-1) = rgb(1,1); endendfigure(5),imshow(img); endend

    原文作者:Pre_Con
    原文地址: https://blog.csdn.net/qq_31975211/article/details/78755157
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞